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