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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]