This is an automated email from the ASF dual-hosted git repository.

gortiz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 5747f11772 include exception messages chain on broker response (#15836)
5747f11772 is described below

commit 5747f11772aca5dc60475ddfbfd27e3c6aadf489
Author: Alberto Bastos <alberto.var...@startree.ai>
AuthorDate: Mon May 19 14:44:37 2025 +0200

    include exception messages chain on broker response (#15836)
---
 .../MultiStageBrokerRequestHandler.java            | 11 ++++-----
 .../apache/pinot/common/utils/ExceptionUtils.java  | 26 +++++++++++++++++++++-
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git 
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/MultiStageBrokerRequestHandler.java
 
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/MultiStageBrokerRequestHandler.java
index dd7b2a47a9..466dfd3103 100644
--- 
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/MultiStageBrokerRequestHandler.java
+++ 
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/MultiStageBrokerRequestHandler.java
@@ -184,16 +184,17 @@ public class MultiStageBrokerRequestHandler extends 
BaseBrokerRequestHandler {
         LOGGER.warn("Request {} failed with exception", requestId, e);
       } else {
         // a _green_ error (see handleRequestThrowing javadoc)
-        LOGGER.info("Request {} failed with message {}", requestId, 
e.getMessage());
+        LOGGER.info("Request {} failed with messages {}", requestId, 
ExceptionUtils.consolidateExceptionMessages(e));
       }
-      BrokerResponseNative brokerResponseNative = new 
BrokerResponseNative(e.getErrorCode(), e.getMessage());
+      BrokerResponseNative brokerResponseNative = new BrokerResponseNative(
+          e.getErrorCode(), ExceptionUtils.consolidateExceptionMessages(e));
       onFailedRequest(brokerResponseNative.getExceptions());
       return brokerResponseNative;
     } catch (RuntimeException e) {
       // a _red_ error (see handleRequestThrowing javadoc)
       LOGGER.warn("Request {} failed in an uncontrolled manner", requestId, e);
-      String subStackTrace = ExceptionUtils.consolidateExceptionMessages(e);
-      BrokerResponseNative brokerResponseNative = new 
BrokerResponseNative(QueryErrorCode.UNKNOWN, subStackTrace);
+      BrokerResponseNative brokerResponseNative = new BrokerResponseNative(
+          QueryErrorCode.UNKNOWN, 
ExceptionUtils.consolidateExceptionMessages(e));
       onFailedRequest(brokerResponseNative.getExceptions());
       return brokerResponseNative;
     }
@@ -437,7 +438,7 @@ public class MultiStageBrokerRequestHandler extends 
BaseBrokerRequestHandler {
         throw e;
       } catch (Throwable t) {
         QueryErrorCode queryErrorCode = QueryErrorCode.QUERY_EXECUTION;
-        String consolidatedMessage = 
ExceptionUtils.consolidateExceptionMessages(t);
+        String consolidatedMessage = 
ExceptionUtils.consolidateExceptionTraces(t);
         LOGGER.error("Caught exception executing request {}: {}, {}", 
requestId, query, consolidatedMessage);
         requestContext.setErrorCode(queryErrorCode);
         return new BrokerResponseNative(queryErrorCode, consolidatedMessage);
diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/ExceptionUtils.java 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/ExceptionUtils.java
index cd12b58489..010ae4cc7f 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/ExceptionUtils.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/ExceptionUtils.java
@@ -18,22 +18,46 @@
  */
 package org.apache.pinot.common.utils;
 
+import org.apache.commons.lang3.StringUtils;
+
+
 public class ExceptionUtils {
 
   private ExceptionUtils() {
   }
 
-  public static String consolidateExceptionMessages(Throwable e) {
+  public static String consolidateExceptionTraces(Throwable e) {
     StringBuilder sb = new StringBuilder();
     // No more than 10 causes
     int maxCauses = 10;
     while (e != null && maxCauses-- > 0) {
       sb.append(getStackTrace(e, 3));
+      if (e.getCause() == e) {
+        break;
+      }
+      e = e.getCause();
+    }
+    return sb.toString();
+  }
+
+  public static String consolidateExceptionMessages(Throwable e) {
+    StringBuilder sb = new StringBuilder();
+    while (e != null) {
+      if (StringUtils.isNotBlank(e.getMessage())) {
+        if (sb.length() > 0) {
+          sb.append(". ");
+        }
+        sb.append(e.getMessage());
+      }
+      if (e.getCause() == e) {
+        break;
+      }
       e = e.getCause();
     }
     return sb.toString();
   }
 
+
   public static String getStackTrace(Throwable e) {
     return getStackTrace(e, Integer.MAX_VALUE);
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to