@@ -6,6 +6,7 @@ package loop_span
66import (
77 "context"
88 "encoding/json"
9+ "sync"
910 "time"
1011
1112 "github.com/coze-dev/coze-loop/backend/pkg/lang/slices"
@@ -38,6 +39,7 @@ type SpanTransConfig struct {
3839 TagFilter * TagFilter `mapstructure:"tag_filter" json:"tag_filter"`
3940 InputFilter * InputFilter `mapstructure:"input_filter" json:"input_filter"`
4041 OutputFilter * OutputFilter `mapstructure:"output_filter" json:"output_filter"`
42+ initOnce sync.Once
4143}
4244
4345type TagFilter struct {
@@ -128,15 +130,17 @@ func (c *OutputFilter) transform(ctx context.Context, span *Span) {
128130}
129131
130132func (c * SpanTransConfig ) init () {
131- if c .TagFilter != nil {
132- c .TagFilter .keyBlackListMap = slices .ToMap (c .TagFilter .KeyBlackList , func (e string ) (string , bool ) { return e , true })
133- }
134- if c .InputFilter != nil {
135- c .InputFilter .keyWhiteListMap = slices .ToMap (c .InputFilter .KeyWhiteList , func (e string ) (string , bool ) { return e , true })
136- }
137- if c .OutputFilter != nil {
138- c .OutputFilter .keyWhiteListMap = slices .ToMap (c .OutputFilter .KeyWhiteList , func (e string ) (string , bool ) { return e , true })
139- }
133+ c .initOnce .Do (func () {
134+ if c .TagFilter != nil {
135+ c .TagFilter .keyBlackListMap = slices .ToMap (c .TagFilter .KeyBlackList , func (e string ) (string , bool ) { return e , true })
136+ }
137+ if c .InputFilter != nil {
138+ c .InputFilter .keyWhiteListMap = slices .ToMap (c .InputFilter .KeyWhiteList , func (e string ) (string , bool ) { return e , true })
139+ }
140+ if c .OutputFilter != nil {
141+ c .OutputFilter .keyWhiteListMap = slices .ToMap (c .OutputFilter .KeyWhiteList , func (e string ) (string , bool ) { return e , true })
142+ }
143+ })
140144}
141145
142146func (c * SpanTransConfig ) satisfyFilter (span * Span ) bool {
0 commit comments