From 5c43457d8c2ef0776fd6677b3b8f28c87861b03e Mon Sep 17 00:00:00 2001 From: Sankeerth Date: Thu, 15 Jun 2023 11:36:13 +0530 Subject: [PATCH] fix: error extraction for errors in destination transformation (#3499) * fix: error extraction for errors in destination transformation Signed-off-by: Sai Sankeerth * chore: replace the string with constant Signed-off-by: Sai Sankeerth --------- Signed-off-by: Sai Sankeerth Co-authored-by: Sai Sankeerth --- enterprise/reporting/error_extractor.go | 5 +++-- enterprise/reporting/reporting_test.go | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/enterprise/reporting/error_extractor.go b/enterprise/reporting/error_extractor.go index 595e26c7d9..ff541d89f3 100644 --- a/enterprise/reporting/error_extractor.go +++ b/enterprise/reporting/error_extractor.go @@ -14,6 +14,7 @@ import ( const ( responseKey = "response" + errorKey = "error" spaceStr = " " destinationResponseKey = "destinationResponse" @@ -29,7 +30,7 @@ var ( spaceRegex = regexp.MustCompile(`\s+`) whitespacesRegex = regexp.MustCompile("[ \t\n\r]*") // used in checking if string is a valid json to remove extra-spaces - defaultErrorMessageKeys = []string{"message", "description", "detail", "title", "error", "error_message"} + defaultErrorMessageKeys = []string{"message", "description", "detail", "title", errorKey, "error_message"} ) type ExtractorHandle struct { @@ -83,7 +84,7 @@ func (ext *ExtractorHandle) getSimpleMessage(jsonStr string) string { return strings.Split(erResStr, "\n")[0] } return "" - case responseKey: + case responseKey, errorKey: if IsJSON(erResStr) { var unmarshalledJson interface{} unmarshalledErr := json.Unmarshal([]byte(erResStr), &unmarshalledJson) diff --git a/enterprise/reporting/reporting_test.go b/enterprise/reporting/reporting_test.go index b38fbca7fa..15bef0d16e 100644 --- a/enterprise/reporting/reporting_test.go +++ b/enterprise/reporting/reporting_test.go @@ -405,6 +405,14 @@ var tcs = []getValTc{ inputStr: `{"response":"{\n\t\t\t\tError: invalid character 'P' looking for beginning of value,\n\t\t\t\t(trRespStCd, trRespBody): (504, Post \"http://transformer.rudder-us-east-1b-blue/v0/destinations/google_adwords_enhanced_conversions/proxy\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)),\n\t\t\t}","firstAttemptedAt":"2023-03-30T17:24:58.068Z","content-type":"text/plain; charset=utf-8"}`, expected: "{\n\t\t\t\tError: invalid character 'P' looking for beginning of value,\n\t\t\t\t(trRespStCd, trRespBody): (504, Post \"http://transformer.rudder-us-east-1b-blue/v0/destinations/google_adwords_enhanced_conversions/proxy\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)),\n\t\t\t}", }, + { + inputStr: `{"error":"{\"message\":\"some random message\",\"destinationResponse\":{\"error\":{\"message\":\"Unhandled random error\",\"type\":\"RandomException\",\"code\":5,\"error_subcode\":12,\"fbtrace_id\":\"facebook_px_trace_id_10\"},\"status\":412}}","firstAttemptedAt":"2023-04-20T17:24:58.068Z","content-type":"text/plain; charset=utf-8"}`, + expected: "Unhandled random error", + }, + { + inputStr: `{"error":"unknown error occurred","firstAttemptedAt":"2023-04-21T17:24:58.068Z","content-type":"text/plain; charset=utf-8"}`, + expected: "unknown error occurred", + }, } func TestGetErrorMessageFromResponse(t *testing.T) {