From cbf03e427cf6746b5b554055477436cb5a8a5c5c Mon Sep 17 00:00:00 2001 From: jesrypandawa <78069094+jesrypandawa@users.noreply.github.com> Date: Tue, 28 Feb 2023 15:03:36 +0700 Subject: [PATCH] chore: add bq log error messages (#80) * add error messages on bq sink exception * bump up version to 0.3.8 * chore: update error message in toString Error class * handle empty string for reason on UnknownError --- build.gradle | 2 +- .../odpf/depot/bigquery/client/BigQueryResponseParser.java | 4 ++-- src/main/java/io/odpf/depot/bigquery/error/ErrorParser.java | 2 +- .../io/odpf/depot/bigquery/error/InvalidSchemaError.java | 2 +- src/main/java/io/odpf/depot/bigquery/error/OOBError.java | 4 ++-- .../java/io/odpf/depot/bigquery/error/StoppedError.java | 2 +- .../java/io/odpf/depot/bigquery/error/UnknownError.java | 6 +++++- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 7f3dcac4..8619ab4d 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ plugins { } group 'io.odpf' -version '0.3.7' +version '0.3.8' repositories { mavenCentral() diff --git a/src/main/java/io/odpf/depot/bigquery/client/BigQueryResponseParser.java b/src/main/java/io/odpf/depot/bigquery/client/BigQueryResponseParser.java index aeffe9f8..ed8d2dce 100644 --- a/src/main/java/io/odpf/depot/bigquery/client/BigQueryResponseParser.java +++ b/src/main/java/io/odpf/depot/bigquery/client/BigQueryResponseParser.java @@ -42,8 +42,8 @@ public static Map getErrorsFromBQResponse( Record record = records.get(errorEntry.getKey().intValue()); long messageIndex = record.getIndex(); List errors = ErrorParser.parseError(errorEntry.getValue()); - instrumentation.logError("Error while bigquery insert for message. Record: {}, Error: {}, MetaData: {}, BQ errors {}", - record.getColumns(), errors, record.getMetadata(), errorEntry.getValue()); + instrumentation.logError("Error while bigquery insert for message. Record: {}, Error: {}, MetaData: {}", + record.getColumns(), errors, record.getMetadata()); if (errorMatch(errors, UnknownError.class)) { errorInfoResponse.put(messageIndex, new ErrorInfo(new BigQuerySinkException(), ErrorType.SINK_UNKNOWN_ERROR)); diff --git a/src/main/java/io/odpf/depot/bigquery/error/ErrorParser.java b/src/main/java/io/odpf/depot/bigquery/error/ErrorParser.java index e253663d..6752b7ce 100644 --- a/src/main/java/io/odpf/depot/bigquery/error/ErrorParser.java +++ b/src/main/java/io/odpf/depot/bigquery/error/ErrorParser.java @@ -23,7 +23,7 @@ public static ErrorDescriptor getError(String reasonText, String msgText) { .stream() .filter(ErrorDescriptor::matches) .findFirst() - .orElse(new UnknownError()); + .orElse(new UnknownError(reasonText, msgText)); } public static List parseError(List bqErrors) { diff --git a/src/main/java/io/odpf/depot/bigquery/error/InvalidSchemaError.java b/src/main/java/io/odpf/depot/bigquery/error/InvalidSchemaError.java index acf7df15..185e32f4 100644 --- a/src/main/java/io/odpf/depot/bigquery/error/InvalidSchemaError.java +++ b/src/main/java/io/odpf/depot/bigquery/error/InvalidSchemaError.java @@ -22,6 +22,6 @@ public boolean matches() { @Override public String toString() { - return "InvalidSchemaError"; + return String.format("InvalidSchemaError: %s", message); } } diff --git a/src/main/java/io/odpf/depot/bigquery/error/OOBError.java b/src/main/java/io/odpf/depot/bigquery/error/OOBError.java index 51b2c9b4..617b05d7 100644 --- a/src/main/java/io/odpf/depot/bigquery/error/OOBError.java +++ b/src/main/java/io/odpf/depot/bigquery/error/OOBError.java @@ -18,9 +18,9 @@ public boolean matches() { && ((message.contains("is outside the allowed bounds") && message.contains("days in the past and") && message.contains("days in the future")) || message.contains("out of range")); } + @Override public String toString() { - return "OOBError"; + return String.format("OOBError: %s", message); } - } diff --git a/src/main/java/io/odpf/depot/bigquery/error/StoppedError.java b/src/main/java/io/odpf/depot/bigquery/error/StoppedError.java index 8f5822f9..ba8ad929 100644 --- a/src/main/java/io/odpf/depot/bigquery/error/StoppedError.java +++ b/src/main/java/io/odpf/depot/bigquery/error/StoppedError.java @@ -22,6 +22,6 @@ public boolean matches() { @Override public String toString() { - return "Stopped"; + return "StoppedError: Failed to insert this row because of some (other)error records in batch"; } } diff --git a/src/main/java/io/odpf/depot/bigquery/error/UnknownError.java b/src/main/java/io/odpf/depot/bigquery/error/UnknownError.java index 6ccce697..e031b78b 100644 --- a/src/main/java/io/odpf/depot/bigquery/error/UnknownError.java +++ b/src/main/java/io/odpf/depot/bigquery/error/UnknownError.java @@ -9,6 +9,10 @@ * */ public class UnknownError implements ErrorDescriptor { + private String reason; + + private String message; + @Override public boolean matches() { return false; @@ -16,6 +20,6 @@ public boolean matches() { @Override public String toString() { - return "UnknownError"; + return String.format("%s: %s", !reason.equals("") ? reason : "UnknownError", message != null ? message : ""); } }