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 0b326c6145 Handle errors gracefully during multi-stage stats
collection in the broker (#13496)
0b326c6145 is described below
commit 0b326c6145802775154cd92bdda431b5420e8f76
Author: Yash Mayya <[email protected]>
AuthorDate: Thu Jun 27 13:41:47 2024 +0530
Handle errors gracefully during multi-stage stats collection in the broker
(#13496)
---
.../MultiStageBrokerRequestHandler.java | 30 ++++++++++++++--------
1 file changed, 20 insertions(+), 10 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 554ce23892..34355c06c7 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
@@ -19,6 +19,7 @@
package org.apache.pinot.broker.requesthandler;
import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -79,6 +80,7 @@ import org.slf4j.LoggerFactory;
public class MultiStageBrokerRequestHandler extends BaseBrokerRequestHandler {
private static final Logger LOGGER =
LoggerFactory.getLogger(MultiStageBrokerRequestHandler.class);
+
private static final int NUM_UNAVAILABLE_SEGMENTS_TO_LOG = 10;
private final WorkerManager _workerManager;
@@ -270,17 +272,25 @@ public class MultiStageBrokerRequestHandler extends
BaseBrokerRequestHandler {
private void fillOldBrokerResponseStats(BrokerResponseNativeV2
brokerResponse,
List<MultiStageQueryStats.StageStats.Closed> queryStats,
DispatchableSubPlan dispatchableSubPlan) {
- List<DispatchablePlanFragment> stagePlans =
dispatchableSubPlan.getQueryStageList();
- List<PlanNode> planNodes = new ArrayList<>(stagePlans.size());
- for (DispatchablePlanFragment stagePlan : stagePlans) {
- planNodes.add(stagePlan.getPlanFragment().getFragmentRoot());
- }
- MultiStageStatsTreeBuilder treeBuilder = new
MultiStageStatsTreeBuilder(planNodes, queryStats);
- brokerResponse.setStageStats(treeBuilder.jsonStatsByStage(0));
- for (MultiStageQueryStats.StageStats.Closed stageStats : queryStats) {
- if (stageStats != null) { // for example pipeline breaker may not have
stats
- stageStats.forEach((type, stats) -> type.mergeInto(brokerResponse,
stats));
+ try {
+ List<DispatchablePlanFragment> stagePlans =
dispatchableSubPlan.getQueryStageList();
+ List<PlanNode> planNodes = new ArrayList<>(stagePlans.size());
+ for (DispatchablePlanFragment stagePlan : stagePlans) {
+ planNodes.add(stagePlan.getPlanFragment().getFragmentRoot());
+ }
+ MultiStageStatsTreeBuilder treeBuilder = new
MultiStageStatsTreeBuilder(planNodes, queryStats);
+ brokerResponse.setStageStats(treeBuilder.jsonStatsByStage(0));
+ for (MultiStageQueryStats.StageStats.Closed stageStats : queryStats) {
+ if (stageStats != null) { // for example pipeline breaker may not have
stats
+ stageStats.forEach((type, stats) -> type.mergeInto(brokerResponse,
stats));
+ }
}
+ } catch (Exception e) {
+ LOGGER.warn("Error encountered while collecting multi-stage stats", e);
+ brokerResponse.setStageStats(JsonNodeFactory.instance.objectNode().put(
+ "error",
+ "Error encountered while collecting multi-stage stats - " + e)
+ );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]