This is an automated email from the ASF dual-hosted git repository.
jackie 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 c15440466a Honor 'numReplicaGroupsToQuery' when 'useFixedReplica' is
set (#15986)
c15440466a is described below
commit c15440466a0032c5f74e55940792fb16cd719760
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Tue Jun 3 19:32:55 2025 -0600
Honor 'numReplicaGroupsToQuery' when 'useFixedReplica' is set (#15986)
---
.../routing/instanceselector/BalancedInstanceSelector.java | 3 ++-
.../routing/instanceselector/ReplicaGroupInstanceSelector.java | 9 +++++----
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
index 62400519e4..807d3e9fda 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
@@ -87,6 +87,7 @@ public class BalancedInstanceSelector extends
BaseInstanceSelector {
}
}
} else {
+ boolean useFixedReplica = isUseFixedReplica(queryOptions);
for (String segment : segments) {
List<SegmentInstanceCandidate> candidates =
segmentStates.getCandidates(segment);
// NOTE: candidates can be null when there is no enabled instances for
the segment, or the instance selector has
@@ -95,7 +96,7 @@ public class BalancedInstanceSelector extends
BaseInstanceSelector {
continue;
}
int selectedIdx;
- if (isUseFixedReplica(queryOptions)) {
+ if (useFixedReplica) {
// candidates array is always sorted
selectedIdx = _tableNameHashForFixedReplicaRouting %
candidates.size();
} else {
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
index 8d87d9d209..943cd10d45 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
@@ -98,10 +98,11 @@ public class ReplicaGroupInstanceSelector extends
BaseInstanceSelector {
Map<String, String> segmentToSelectedInstanceMap = new
HashMap<>(HashUtil.getHashMapCapacity(segments.size()));
// No need to adjust this map per total segment numbers, as optional
segments should be empty most of the time.
Map<String, String> optionalSegmentToInstanceMap = new HashMap<>();
+ Map<Integer, Integer> replicaGroupToSegmentCount = new HashMap<>();
+ boolean useFixedReplica = isUseFixedReplica(ctx.getQueryOptions());
Integer numReplicaGroupsToQuery =
QueryOptionsUtils.getNumReplicaGroupsToQuery(ctx.getQueryOptions());
- int numReplicaGroups = numReplicaGroupsToQuery == null ? 1 :
numReplicaGroupsToQuery;
+ int numReplicaGroups = numReplicaGroupsToQuery != null ?
numReplicaGroupsToQuery : 1;
int replicaOffset = 0;
- Map<Integer, Integer> replicaGroupToSegmentCount = new HashMap<>();
for (String segment : segments) {
List<SegmentInstanceCandidate> candidates =
segmentStates.getCandidates(segment);
// NOTE: candidates can be null when there is no enabled instances for
the segment, or the instance selector has
@@ -113,9 +114,9 @@ public class ReplicaGroupInstanceSelector extends
BaseInstanceSelector {
int numCandidates = candidates.size();
int instanceIdx;
- if (isUseFixedReplica(ctx.getQueryOptions())) {
+ if (useFixedReplica) {
// candidates array is always sorted
- instanceIdx = _tableNameHashForFixedReplicaRouting % numCandidates;
+ instanceIdx = (_tableNameHashForFixedReplicaRouting + replicaOffset) %
numCandidates;
} else {
instanceIdx = (requestId + replicaOffset) % numCandidates;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]