From 4f2c314f395d04c1c151301b411dc2424013a51c Mon Sep 17 00:00:00 2001 From: Nityananda Gohain Date: Thu, 27 Jun 2024 12:34:23 +0530 Subject: [PATCH] feat: add spanKind and status in span response (#5120) * feat: add spanKind and errorMessage in span response * fix: add statusCodeString --- .../app/clickhouseReader/reader.go | 2 +- pkg/query-service/model/response.go | 31 ++++++++++--------- pkg/query-service/model/response_easyjson.go | 21 +++++++++++++ 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/pkg/query-service/app/clickhouseReader/reader.go b/pkg/query-service/app/clickhouseReader/reader.go index c82afb9861..4e5f342301 100644 --- a/pkg/query-service/app/clickhouseReader/reader.go +++ b/pkg/query-service/app/clickhouseReader/reader.go @@ -1942,7 +1942,7 @@ func (r *ClickHouseReader) SearchTraces(ctx context.Context, params *model.Searc end := time.Now() zap.L().Debug("getTraceSQLQuery took: ", zap.Duration("duration", end.Sub(start))) searchSpansResult := []model.SearchSpansResult{{ - Columns: []string{"__time", "SpanId", "TraceId", "ServiceName", "Name", "Kind", "DurationNano", "TagsKeys", "TagsValues", "References", "Events", "HasError"}, + Columns: []string{"__time", "SpanId", "TraceId", "ServiceName", "Name", "Kind", "DurationNano", "TagsKeys", "TagsValues", "References", "Events", "HasError", "StatusMessage", "StatusCodeString", "SpanKind"}, Events: make([][]interface{}, len(searchScanResponses)), IsSubTree: false, }, diff --git a/pkg/query-service/model/response.go b/pkg/query-service/model/response.go index 5ad5ea54ef..d13ebd0cdb 100644 --- a/pkg/query-service/model/response.go +++ b/pkg/query-service/model/response.go @@ -252,19 +252,22 @@ type Event struct { //easyjson:json type SearchSpanResponseItem struct { - TimeUnixNano uint64 `json:"timestamp"` - DurationNano int64 `json:"durationNano"` - SpanID string `json:"spanId"` - RootSpanID string `json:"rootSpanId"` - TraceID string `json:"traceId"` - HasError bool `json:"hasError"` - Kind int32 `json:"kind"` - ServiceName string `json:"serviceName"` - Name string `json:"name"` - References []OtelSpanRef `json:"references,omitempty"` - TagMap map[string]string `json:"tagMap"` - Events []string `json:"event"` - RootName string `json:"rootName"` + TimeUnixNano uint64 `json:"timestamp"` + DurationNano int64 `json:"durationNano"` + SpanID string `json:"spanId"` + RootSpanID string `json:"rootSpanId"` + TraceID string `json:"traceId"` + HasError bool `json:"hasError"` + Kind int32 `json:"kind"` + ServiceName string `json:"serviceName"` + Name string `json:"name"` + References []OtelSpanRef `json:"references,omitempty"` + TagMap map[string]string `json:"tagMap"` + Events []string `json:"event"` + RootName string `json:"rootName"` + StatusMessage string `json:"statusMessage"` + StatusCodeString string `json:"statusCodeString"` + SpanKind string `json:"spanKind"` } type OtelSpanRef struct { @@ -301,7 +304,7 @@ func (item *SearchSpanResponseItem) GetValues() []interface{} { keys = append(keys, k) values = append(values, v) } - returnArray := []interface{}{item.TimeUnixNano, item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), keys, values, referencesStringArray, item.Events, item.HasError} + returnArray := []interface{}{item.TimeUnixNano, item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), keys, values, referencesStringArray, item.Events, item.HasError, item.StatusMessage, item.StatusCodeString, item.SpanKind} return returnArray } diff --git a/pkg/query-service/model/response_easyjson.go b/pkg/query-service/model/response_easyjson.go index 8c00b2a80b..708bc55707 100644 --- a/pkg/query-service/model/response_easyjson.go +++ b/pkg/query-service/model/response_easyjson.go @@ -118,6 +118,12 @@ func easyjson6ff3ac1dDecodeGoSignozIoSignozPkgQueryServiceModel(in *jlexer.Lexer } case "rootName": out.RootName = string(in.String()) + case "statusMessage": + out.StatusMessage = string(in.String()) + case "statusCodeString": + out.StatusCodeString = string(in.String()) + case "spanKind": + out.SpanKind = string(in.String()) default: in.SkipRecursive() } @@ -233,6 +239,21 @@ func easyjson6ff3ac1dEncodeGoSignozIoSignozPkgQueryServiceModel(out *jwriter.Wri out.RawString(prefix) out.String(string(in.RootName)) } + { + const prefix string = ",\"statusMessage\":" + out.RawString(prefix) + out.String(string(in.StatusMessage)) + } + { + const prefix string = ",\"statusCodeString\":" + out.RawString(prefix) + out.String(string(in.StatusCodeString)) + } + { + const prefix string = ",\"spanKind\":" + out.RawString(prefix) + out.String(string(in.SpanKind)) + } out.RawByte('}') }