nats-io/nats-server · error
unknown trace type %v
Error message
unknown trace type %v
What it means
Raised in MsgTraceEvents.UnmarshalJSON: a trace event's "type" field does not map to any entry in the msgTraceInterfaces registry (MsgTraceJetStreamType, MsgTraceEgressType, etc.), so the decoder cannot pick a concrete trace type to unmarshal into. Typically means the JSON was produced by a newer/older server with unknown trace types.
Source
Thrown at server/msgtrace.go:175
MsgTraceJetStreamType: MsgTraceJetStream{},
MsgTraceEgressType: MsgTraceEgress{},
}
func (t *MsgTraceEvents) UnmarshalJSON(data []byte) error {
var raw []json.RawMessage
err := json.Unmarshal(data, &raw)
if err != nil {
return err
}
*t = make(MsgTraceEvents, len(raw))
var tt MsgTraceBase
for i, r := range raw {
if err = json.Unmarshal(r, &tt); err != nil {
return err
}
tr, ok := msgTraceInterfaces[tt.Type]
if !ok {
return fmt.Errorf("unknown trace type %v", tt.Type)
}
te := tr.new()
if err := json.Unmarshal(r, te); err != nil {
return err
}
(*t)[i] = te
}
return nil
}
func getTraceAs[T MsgTrace](e any) *T {
v, ok := e.(*T)
if ok {
return v
}
return nil
}
View on GitHub (pinned to 3a66a489d2)
Solutions
- Ensure the producer and consumer of the trace JSON run compatible server versions
- Ignore/skip unknown trace types if forward compatibility is required
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/msgtrace.go:175 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nats-io/nats-server@3a66a489d2 (2026-09-02).
Data as JSON: /api/errors/d6e8e9ad6161e956.
Report an issue: GitHub.