From 80df46dbc87b4c20629a768e18517f86bafd6f56 Mon Sep 17 00:00:00 2001 From: vagarwal-viant Date: Thu, 10 Jul 2025 14:58:18 -0700 Subject: [PATCH 1/2] ENG-00000 remove trim of nongraphic characters --- gateway/router/marshal/json/marshaller_strings.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gateway/router/marshal/json/marshaller_strings.go b/gateway/router/marshal/json/marshaller_strings.go index bb2a8ebd8..322dd53a0 100644 --- a/gateway/router/marshal/json/marshaller_strings.go +++ b/gateway/router/marshal/json/marshaller_strings.go @@ -5,7 +5,6 @@ import ( "github.com/viant/tagly/format" "github.com/viant/xunsafe" "strings" - "unicode" "unsafe" ) @@ -51,9 +50,12 @@ func (i *stringMarshaller) ensureReplacer() { } func marshallString(asString string, sb *MarshallSession, replacer *strings.Replacer) { - asString = strings.TrimFunc(asString, func(r rune) bool { - return !unicode.IsGraphic(r) - }) + // This removes all /n characters at begining and end of log lines in CI_EVENT Table + /* + asString = strings.TrimFunc(asString, func(r rune) bool { + return !unicode.IsGraphic(r) + }) + */ sb.WriteByte('"') sb.WriteString(replacer.Replace(asString)) From 06dba531207d0f81152f4d3df99c28b4e2dcfcf7 Mon Sep 17 00:00:00 2001 From: vagarwal-viant Date: Tue, 25 Nov 2025 11:14:31 -0800 Subject: [PATCH 2/2] ENG-51724 add safe guards across marshalling for deeper dive into panic --- repository/logging/logging.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/repository/logging/logging.go b/repository/logging/logging.go index 00440ac60..8bea12fa4 100644 --- a/repository/logging/logging.go +++ b/repository/logging/logging.go @@ -15,8 +15,8 @@ func Log(config *Config, execContext *exec.Context) { execContext.Metrics = execContext.Metrics.HideMetrics() } if config.IsAuditEnabled() { - data, _ := json.Marshal(execContext) - fmt.Println("[AUDIT] " + string(data)) + data := safeMarshal("EXECCONTEXT", execContext) + fmt.Println("[AUDIT]", string(data)) } if config.IsTracingEnabled() { trace := execContext.Trace @@ -42,7 +42,21 @@ func Log(config *Config, execContext *exec.Context) { } else { trace.Spans[0].SetStatusFromHTTPCode(execContext.StatusCode) } - traceData, _ := json.Marshal(trace) - fmt.Println("[TRACE] " + string(traceData)) + traceData := safeMarshal("TRACE", trace) + fmt.Println("[TRACE]", string(traceData)) } } + +func safeMarshal(label string, v any) []byte { + defer func() { + if r := recover(); r != nil { + fmt.Printf("[LOG-MARSHAL-PANIC] label=%s type=%T panic=%v\n", label, v, r) + } + }() + data, err := json.Marshal(v) + if err != nil { + fmt.Printf("[LOG-MARSHAL-ERROR] label=%s type=%T err=%v\n", label, v, err) + return nil + } + return data +}