This is an automated email from the ASF dual-hosted git repository. xbli 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 a9aad2de86 add routing policy in query errmsg upon unavailable segments for a bit more context (#13706) a9aad2de86 is described below commit a9aad2de865cf0332ae4fe0333e463f4345736a4 Author: Xiaobing <61892277+klsi...@users.noreply.github.com> AuthorDate: Thu Aug 8 15:20:28 2024 -0700 add routing policy in query errmsg upon unavailable segments for a bit more context (#13706) * add routing policy in query errmsg upon unavailable segments for a bit more context --- .../BaseSingleStageBrokerRequestHandler.java | 29 ++++++++++++++++++++++ .../BaseSingleStageBrokerRequestHandlerTest.java | 11 ++++++++ .../pinot/spi/config/table/RoutingConfig.java | 1 + 3 files changed, 41 insertions(+) diff --git a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java index dfac99bb82..28eebf205b 100644 --- a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java +++ b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java @@ -91,6 +91,7 @@ import org.apache.pinot.query.parser.utils.ParserUtils; import org.apache.pinot.spi.auth.AuthorizationResult; import org.apache.pinot.spi.config.table.FieldConfig; import org.apache.pinot.spi.config.table.QueryConfig; +import org.apache.pinot.spi.config.table.RoutingConfig; import org.apache.pinot.spi.config.table.TableConfig; import org.apache.pinot.spi.config.table.TableType; import org.apache.pinot.spi.data.DimensionFieldSpec; @@ -679,6 +680,9 @@ public abstract class BaseSingleStageBrokerRequestHandler extends BaseBrokerRequ } else { errorMessage = String.format("%d segments unavailable: %s", numUnavailableSegments, unavailableSegments); } + String realtimeRoutingPolicy = realtimeBrokerRequest != null ? getRoutingPolicy(realtimeTableConfig) : null; + String offlineRoutingPolicy = offlineBrokerRequest != null ? getRoutingPolicy(offlineTableConfig) : null; + errorMessage = addRoutingPolicyInErrMsg(errorMessage, realtimeRoutingPolicy, offlineRoutingPolicy); exceptions.add(QueryException.getException(QueryException.BROKER_SEGMENT_UNAVAILABLE_ERROR, errorMessage)); _brokerMetrics.addMeteredTableValue(rawTableName, BrokerMeter.BROKER_RESPONSES_WITH_UNAVAILABLE_SEGMENTS, 1); } @@ -836,6 +840,31 @@ public abstract class BaseSingleStageBrokerRequestHandler extends BaseBrokerRequ } } + @VisibleForTesting + static String addRoutingPolicyInErrMsg(String errorMessage, String realtimeRoutingPolicy, + String offlineRoutingPolicy) { + if (realtimeRoutingPolicy != null && offlineRoutingPolicy != null) { + return errorMessage + ", with routing policy: " + realtimeRoutingPolicy + " [realtime], " + offlineRoutingPolicy + + " [offline]"; + } + if (realtimeRoutingPolicy != null) { + return errorMessage + ", with routing policy: " + realtimeRoutingPolicy + " [realtime]"; + } + if (offlineRoutingPolicy != null) { + return errorMessage + ", with routing policy: " + offlineRoutingPolicy + " [offline]"; + } + return errorMessage; + } + + private static String getRoutingPolicy(TableConfig tableConfig) { + RoutingConfig routingConfig = tableConfig.getRoutingConfig(); + if (routingConfig == null) { + return RoutingConfig.DEFAULT_INSTANCE_SELECTOR_TYPE; + } + String selectorType = routingConfig.getInstanceSelectorType(); + return selectorType != null ? selectorType : RoutingConfig.DEFAULT_INSTANCE_SELECTOR_TYPE; + } + private BrokerResponseNative getEmptyBrokerOnlyResponse(PinotQuery pinotQuery, RequestContext requestContext, String tableName, @Nullable RequesterIdentity requesterIdentity) { if (pinotQuery.isExplain()) { diff --git a/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandlerTest.java b/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandlerTest.java index 7dfbdd75b9..0677d9dc5d 100644 --- a/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandlerTest.java +++ b/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandlerTest.java @@ -223,4 +223,15 @@ public class BaseSingleStageBrokerRequestHandlerTest { Assert.assertEquals(servers.iterator().next().getAdminEndpoint(), "http://server01:8097"); latch.countDown(); } + + @Test + public void testAddRoutingPolicyInErrMsg() { + Assert.assertEquals(BaseSingleStageBrokerRequestHandler.addRoutingPolicyInErrMsg("error1", null, null), "error1"); + Assert.assertEquals(BaseSingleStageBrokerRequestHandler.addRoutingPolicyInErrMsg("error1", "rt_rp", null), + "error1, with routing policy: rt_rp [realtime]"); + Assert.assertEquals(BaseSingleStageBrokerRequestHandler.addRoutingPolicyInErrMsg("error1", null, "off_rp"), + "error1, with routing policy: off_rp [offline]"); + Assert.assertEquals(BaseSingleStageBrokerRequestHandler.addRoutingPolicyInErrMsg("error1", "rt_rp", "off_rp"), + "error1, with routing policy: rt_rp [realtime], off_rp [offline]"); + } } diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/RoutingConfig.java b/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/RoutingConfig.java index 7bf5970f11..65b1b00a48 100644 --- a/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/RoutingConfig.java +++ b/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/RoutingConfig.java @@ -29,6 +29,7 @@ public class RoutingConfig extends BaseJsonConfig { public static final String PARTITION_SEGMENT_PRUNER_TYPE = "partition"; public static final String TIME_SEGMENT_PRUNER_TYPE = "time"; public static final String EMPTY_SEGMENT_PRUNER_TYPE = "empty"; + public static final String DEFAULT_INSTANCE_SELECTOR_TYPE = "balanced"; public static final String REPLICA_GROUP_INSTANCE_SELECTOR_TYPE = "replicaGroup"; public static final String STRICT_REPLICA_GROUP_INSTANCE_SELECTOR_TYPE = "strictReplicaGroup"; public static final String MULTI_STAGE_REPLICA_GROUP_SELECTOR_TYPE = "multiStageReplicaGroup"; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org