From bdeadaeff6074356686792175572a91529a268cb Mon Sep 17 00:00:00 2001 From: makeavish Date: Mon, 28 Feb 2022 16:51:58 +0530 Subject: [PATCH 1/3] feat(backend): support custom events in span --- pkg/query-service/model/response.go | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/pkg/query-service/model/response.go b/pkg/query-service/model/response.go index fb5c460747..7526505d33 100644 --- a/pkg/query-service/model/response.go +++ b/pkg/query-service/model/response.go @@ -205,17 +205,8 @@ func (item *SearchSpanReponseItem) GetValues() []interface{} { for _, item := range references { referencesStringArray = append(referencesStringArray, item.toString()) } - var errorEvent map[string]interface{} - for _, e := range item.Events { - json.Unmarshal([]byte(e), &errorEvent) - if errorEvent["name"] == "exception" { - break - } else { - errorEvent = nil - } - } - returnArray := []interface{}{int64(timeObj.UnixNano() / 1000000), item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), item.TagsKeys, item.TagsValues, referencesStringArray, errorEvent, item.HasError} + returnArray := []interface{}{int64(timeObj.UnixNano() / 1000000), item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), item.TagsKeys, item.TagsValues, referencesStringArray, item.Events, item.HasError} return returnArray } From 3e24e371f49bbf475062d17bff6aae80c0a2ba62 Mon Sep 17 00:00:00 2001 From: makeavish Date: Tue, 1 Mar 2022 16:16:45 +0530 Subject: [PATCH 2/3] fix: encode event string to fix parsing at frontend --- pkg/query-service/model/response.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/query-service/model/response.go b/pkg/query-service/model/response.go index 7526505d33..b61a828d5e 100644 --- a/pkg/query-service/model/response.go +++ b/pkg/query-service/model/response.go @@ -4,6 +4,7 @@ import ( "database/sql" "encoding/json" "fmt" + "net/url" "strconv" "time" @@ -205,8 +206,13 @@ func (item *SearchSpanReponseItem) GetValues() []interface{} { for _, item := range references { referencesStringArray = append(referencesStringArray, item.toString()) } + events := []string{} + // encoding event string due to bug in frontend parser + for _, e := range item.Events { + events = append(events, url.QueryEscape(e)) + } - returnArray := []interface{}{int64(timeObj.UnixNano() / 1000000), item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), item.TagsKeys, item.TagsValues, referencesStringArray, item.Events, item.HasError} + returnArray := []interface{}{int64(timeObj.UnixNano() / 1000000), item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), item.TagsKeys, item.TagsValues, referencesStringArray, events, item.HasError} return returnArray } From 2d5ad346a6c41aa45f9f295c66cf8b552c65ef64 Mon Sep 17 00:00:00 2001 From: makeavish Date: Thu, 3 Mar 2022 14:45:43 +0530 Subject: [PATCH 3/3] fix: remove encoding --- pkg/query-service/model/response.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkg/query-service/model/response.go b/pkg/query-service/model/response.go index b61a828d5e..7526505d33 100644 --- a/pkg/query-service/model/response.go +++ b/pkg/query-service/model/response.go @@ -4,7 +4,6 @@ import ( "database/sql" "encoding/json" "fmt" - "net/url" "strconv" "time" @@ -206,13 +205,8 @@ func (item *SearchSpanReponseItem) GetValues() []interface{} { for _, item := range references { referencesStringArray = append(referencesStringArray, item.toString()) } - events := []string{} - // encoding event string due to bug in frontend parser - for _, e := range item.Events { - events = append(events, url.QueryEscape(e)) - } - returnArray := []interface{}{int64(timeObj.UnixNano() / 1000000), item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), item.TagsKeys, item.TagsValues, referencesStringArray, events, item.HasError} + returnArray := []interface{}{int64(timeObj.UnixNano() / 1000000), item.SpanID, item.TraceID, item.ServiceName, item.Name, strconv.Itoa(int(item.Kind)), strconv.FormatInt(item.DurationNano, 10), item.TagsKeys, item.TagsValues, referencesStringArray, item.Events, item.HasError} return returnArray }