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