Skip to content

Commit 7d5d29e

Browse files
committed
feat(backend): fix
1 parent d051f4c commit 7d5d29e

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

backend/modules/observability/infra/config/trace.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/coze-dev/coze-loop/backend/modules/observability/domain/component/config"
1111
"github.com/coze-dev/coze-loop/backend/modules/observability/domain/trace/entity/loop_span"
1212
"github.com/coze-dev/coze-loop/backend/pkg/conf"
13+
"github.com/coze-dev/coze-loop/backend/pkg/json"
1314
"github.com/coze-dev/coze-loop/backend/pkg/logs"
1415
)
1516

@@ -53,8 +54,17 @@ func (t *TraceConfigCenter) GetPlatformTenants(ctx context.Context) (*config.Pla
5354

5455
func (t *TraceConfigCenter) GetPlatformSpansTrans(ctx context.Context, platformType loop_span.PlatformType) (loop_span.SpanTransCfgList, error) {
5556
cfg := new(config.SpanTransHandlerConfig)
56-
if err := t.UnmarshalKey(ctx, platformSpanHandlerCfgKey, cfg); err != nil {
57-
return nil, err
57+
val := t.Get(ctx, platformSpanHandlerCfgKey)
58+
if val == nil {
59+
return nil, fmt.Errorf("config not found")
60+
}
61+
strVal, ok := val.(string)
62+
if !ok {
63+
return nil, fmt.Errorf("config not string")
64+
}
65+
// unmarshal to avoid data race
66+
if err := json.Unmarshal([]byte(strVal), cfg); err != nil {
67+
return nil, fmt.Errorf("fail to unmarshal config: %v", err)
5868
}
5969
ret := cfg.PlatformCfg[string(platformType)]
6070
for _, inheritance := range cfg.PlatformInheritance[string(platformType)] {

backend/modules/observability/infra/config/trace_test.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -159,33 +159,22 @@ func TestTraceConfigCenter_GetPlatformSpansTrans(t *testing.T) {
159159
name: "get platform spans trans successfully",
160160
fieldsGetter: func(ctrl *gomock.Controller) fields {
161161
mockLoader := confmocks.NewMockIConfigLoader(ctrl)
162-
mockLoader.EXPECT().UnmarshalKey(gomock.Any(), platformSpanHandlerCfgKey, gomock.Any()).
163-
DoAndReturn(func(ctx context.Context, key string, v interface{}, opts ...interface{}) error {
164-
cfg := v.(*config.SpanTransHandlerConfig)
165-
cfg.PlatformCfg = map[string]loop_span.SpanTransCfgList{
166-
"test_platform": {
167-
{},
168-
},
169-
}
170-
return nil
171-
})
162+
mockLoader.EXPECT().Get(gomock.Any(), platformSpanHandlerCfgKey).Return(`{"platform_cfg":{"test_platform":[]}}`)
172163
return fields{configLoader: mockLoader}
173164
},
174165
args: args{
175166
ctx: context.Background(),
176167
platformType: "test_platform",
177168
},
178-
want: loop_span.SpanTransCfgList{
179-
{},
180-
},
169+
want: loop_span.SpanTransCfgList{},
181170
wantErr: false,
182171
},
183172
{
184173
name: "unmarshal key failed",
185174
fieldsGetter: func(ctrl *gomock.Controller) fields {
186175
mockLoader := confmocks.NewMockIConfigLoader(ctrl)
187-
mockLoader.EXPECT().UnmarshalKey(gomock.Any(), platformSpanHandlerCfgKey, gomock.Any()).
188-
Return(fmt.Errorf("unmarshal error"))
176+
mockLoader.EXPECT().Get(gomock.Any(), platformSpanHandlerCfgKey).
177+
Return(nil)
189178
return fields{configLoader: mockLoader}
190179
},
191180
args: args{

0 commit comments

Comments
 (0)