diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 04d1dfe53ba4..813dd5d09aaf 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -57,6 +57,8 @@ Bug Fixes * SOLR-15324: Upgrade jaegertracing to 1.6.0 and libthrift to 0.14.1 (wcmrnd1, janhoy) +* SOLR-15892: Adding Randomization in selecting shard leaders for delete and commit requests for RoutedAlias + ================== 8.11.0 ================== Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release. diff --git a/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java index d95f946578b0..6eacd50dbd9f 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -86,6 +87,8 @@ public class RoutedAliasUpdateProcessor extends UpdateRequestProcessor { private final RoutedAlias routedAlias; private final SolrParams outParamsToLeader; + private static final Random random = new Random(); + public static UpdateRequestProcessor wrap(SolrQueryRequest req, UpdateRequestProcessor next) { String aliasName = null; @@ -254,7 +257,7 @@ private SolrCmdDistributor.Node lookupShardLeaderOfCollection(String collection) if (activeSlices.length == 0) { throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, "Cannot route to collection " + collection); } - final Slice slice = activeSlices[0]; + final Slice slice = activeSlices[random.nextInt(activeSlices.length)]; return getLeaderNode(collection, slice); }