Skip to content

Commit b7258e8

Browse files
authored
fix: use pointer type for Set() on NullableJSON fields in trace transform (#12)
field.Set() on FieldTypeNullableJSON expects *json.RawMessage, not json.RawMessage. Passing the wrong type causes panic: "interface conversion: interface {} is json.RawMessage, not *json.RawMessage"
1 parent 066bcb4 commit b7258e8

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

pkg/plugin/driver.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ func convertJSONFieldsToString(frame *data.Frame) {
136136
// - Already correct format: [{"key":"k","value":"v"}] → pass through
137137
func transformTraceAttributes(frame *data.Frame) {
138138
for i, field := range frame.Fields {
139-
if field.Type() != data.FieldTypeJSON && field.Type() != data.FieldTypeNullableJSON {
139+
isNullable := field.Type() == data.FieldTypeNullableJSON
140+
if field.Type() != data.FieldTypeJSON && !isNullable {
140141
continue
141142
}
142143
name := field.Name
@@ -146,7 +147,12 @@ func transformTraceAttributes(frame *data.Frame) {
146147
for j := 0; j < field.Len(); j++ {
147148
val := field.At(j)
148149
if val == nil {
149-
field.Set(j, json.RawMessage("[]"))
150+
emptyArr := json.RawMessage("[]")
151+
if isNullable {
152+
frame.Fields[i].Set(j, &emptyArr)
153+
} else {
154+
frame.Fields[i].Set(j, emptyArr)
155+
}
150156
continue
151157
}
152158
var raw json.RawMessage
@@ -155,15 +161,20 @@ func transformTraceAttributes(frame *data.Frame) {
155161
raw = v
156162
case *json.RawMessage:
157163
if v == nil {
158-
field.Set(j, json.RawMessage("[]"))
164+
emptyArr := json.RawMessage("[]")
165+
frame.Fields[i].Set(j, &emptyArr)
159166
continue
160167
}
161168
raw = *v
162169
default:
163170
continue
164171
}
165172
transformed := transformToKeyValueArray(raw, name)
166-
frame.Fields[i].Set(j, transformed)
173+
if isNullable {
174+
frame.Fields[i].Set(j, &transformed)
175+
} else {
176+
frame.Fields[i].Set(j, transformed)
177+
}
167178
}
168179
}
169180
}

0 commit comments

Comments
 (0)