From 6b8c27da32c541c4e8bca46cf1e052293782e592 Mon Sep 17 00:00:00 2001 From: skyflow-vivek Date: Tue, 25 Feb 2025 13:57:47 +0530 Subject: [PATCH] SK-1900 Improve debugging errors in connections --- .../com/skyflow/errors/SkyflowException.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/skyflow/errors/SkyflowException.java b/src/main/java/com/skyflow/errors/SkyflowException.java index 1db1ed19..a455521d 100644 --- a/src/main/java/com/skyflow/errors/SkyflowException.java +++ b/src/main/java/com/skyflow/errors/SkyflowException.java @@ -41,10 +41,10 @@ public SkyflowException(int httpCode, Throwable cause, Map> super(cause); this.httpCode = httpCode; setRequestId(responseHeaders); - setResponseBody(responseBody); + setResponseBody(responseBody, responseHeaders); } - private void setResponseBody(String responseBody) { + private void setResponseBody(String responseBody, Map> responseHeaders) { try { if (responseBody != null) { this.responseBody = JsonParser.parseString(responseBody).getAsJsonObject(); @@ -52,7 +52,7 @@ private void setResponseBody(String responseBody) { setGrpcCode(); setHttpStatus(); setMessage(); - setDetails(); + setDetails(responseHeaders); } } } catch (JsonSyntaxException e) { @@ -86,9 +86,19 @@ private void setHttpStatus() { this.httpStatus = statusElement == null ? null : statusElement.getAsString(); } - private void setDetails() { + private void setDetails(Map> responseHeaders) { JsonElement detailsElement = ((JsonObject) responseBody.get("error")).get("details"); - this.details = detailsElement == null ? null : detailsElement.getAsJsonArray(); + List errorFromClientHeader = responseHeaders.get("error-from-client"); + if (detailsElement != null) { + this.details = detailsElement.getAsJsonArray(); + } + if (errorFromClientHeader != null) { + this.details = this.details == null ? new JsonArray() : this.details; + String errorFromClient = errorFromClientHeader.get(0); + JsonObject detailObject = new JsonObject(); + detailObject.addProperty("errorFromClient", errorFromClient); + this.details.add(detailObject); + } } public int getHttpCode() {