From 8724696290fc23821411f45dc04c967cd7149a0c Mon Sep 17 00:00:00 2001 From: George Claireaux Date: Thu, 16 Jun 2022 15:44:33 +0100 Subject: [PATCH 1/3] updated stacktrace format in java trace messages --- .../base/AirbyteTraceMessageUtility.java | 3 ++- .../base/AirbyteTraceMessageUtilityTest.java | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java index 765920ed24217..d4fb26f76633f 100644 --- a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java +++ b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java @@ -11,6 +11,7 @@ import io.airbyte.protocol.models.AirbyteTraceMessage; import java.util.Arrays; import java.util.function.Consumer; +import org.apache.commons.lang3.exception.ExceptionUtils; public final class AirbyteTraceMessageUtility { @@ -53,7 +54,7 @@ private static AirbyteMessage makeErrorTraceAirbyteMessage( .withFailureType(failureType) .withMessage(displayMessage) .withInternalMessage(e.toString()) - .withStackTrace(Arrays.toString(e.getStackTrace())))); + .withStackTrace(ExceptionUtils.getStackTrace(e)))); } private static AirbyteMessage makeAirbyteMessageFromTraceMessage(AirbyteTraceMessage airbyteTraceMessage) { diff --git a/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java b/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java index 19146e15b37b2..9f1457110f998 100644 --- a/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java +++ b/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java @@ -36,13 +36,17 @@ private void assertJsonNodeIsTraceMessage(JsonNode jsonNode) { @Test void testEmitSystemErrorTrace() { AirbyteTraceMessageUtility.emitSystemErrorTrace(Mockito.mock(RuntimeException.class), "this is a system error"); - assertJsonNodeIsTraceMessage(Jsons.deserialize(outContent.toString(StandardCharsets.UTF_8))); + JsonNode outJson = Jsons.deserialize(outContent.toString(StandardCharsets.UTF_8)); + assertJsonNodeIsTraceMessage(outJson); + Assertions.assertEquals("system_error", outJson.get("trace").get("error").get("failure_type").asText()); } @Test void testEmitConfigErrorTrace() { AirbyteTraceMessageUtility.emitConfigErrorTrace(Mockito.mock(RuntimeException.class), "this is a config error"); - assertJsonNodeIsTraceMessage(Jsons.deserialize(outContent.toString(StandardCharsets.UTF_8))); + JsonNode outJson = Jsons.deserialize(outContent.toString(StandardCharsets.UTF_8)); + assertJsonNodeIsTraceMessage(outJson); + Assertions.assertEquals("config_error", outJson.get("trace").get("error").get("failure_type").asText()); } @Test @@ -51,6 +55,16 @@ void testEmitErrorTrace() { assertJsonNodeIsTraceMessage(Jsons.deserialize(outContent.toString(StandardCharsets.UTF_8))); } + @Test + void testCorrectStacktraceFormat() { + try { + int x = 1 / 0; + } catch (Exception e) { + AirbyteTraceMessageUtility.emitSystemErrorTrace(e, "you exploded the universe"); + } + Assertions.assertTrue(outContent.toString(StandardCharsets.UTF_8).contains("\\n\\tat")); + } + @AfterEach public void revertOut() { System.setOut(originalOut); From 185a6111d849f6b0f49747ea6fe49b51a1d9f534 Mon Sep 17 00:00:00 2001 From: George Claireaux Date: Thu, 16 Jun 2022 16:10:33 +0100 Subject: [PATCH 2/3] test checks specifically on stacktrace in trace message --- .../integrations/base/AirbyteTraceMessageUtilityTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java b/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java index 9f1457110f998..0c5351552899d 100644 --- a/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java +++ b/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteTraceMessageUtilityTest.java @@ -62,7 +62,8 @@ void testCorrectStacktraceFormat() { } catch (Exception e) { AirbyteTraceMessageUtility.emitSystemErrorTrace(e, "you exploded the universe"); } - Assertions.assertTrue(outContent.toString(StandardCharsets.UTF_8).contains("\\n\\tat")); + JsonNode outJson = Jsons.deserialize(outContent.toString(StandardCharsets.UTF_8)); + Assertions.assertTrue(outJson.get("trace").get("error").get("stack_trace").asText().contains("\n\tat")); } @AfterEach From e4c5dcf5afaae94c3e4482cb38f1764c78b3d089 Mon Sep 17 00:00:00 2001 From: George Claireaux Date: Thu, 16 Jun 2022 16:36:29 +0100 Subject: [PATCH 3/3] remove unused import --- .../io/airbyte/integrations/base/AirbyteTraceMessageUtility.java | 1 - 1 file changed, 1 deletion(-) diff --git a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java index d4fb26f76633f..885a307b3eb3f 100644 --- a/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java +++ b/airbyte-integrations/bases/base-java/src/main/java/io/airbyte/integrations/base/AirbyteTraceMessageUtility.java @@ -9,7 +9,6 @@ import io.airbyte.protocol.models.AirbyteMessage; import io.airbyte.protocol.models.AirbyteMessage.Type; import io.airbyte.protocol.models.AirbyteTraceMessage; -import java.util.Arrays; import java.util.function.Consumer; import org.apache.commons.lang3.exception.ExceptionUtils;