You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2015/06/10 15:49:06 UTC
svn commit: r1684674 - in /lucene/dev/branches/lucene_solr_5_2: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/servlet/
solr/core/src/test/org/apache/solr/cloud/
Author: shalin
Date: Wed Jun 10 13:49:05 2015
New Revision: 1684674
URL: http://svn.apache.org/r1684674
Log:
SOLR-7493: Requests aren't distributed evenly if the collection isn't present locally. Merging r1683950 from branch_5x
Added:
lucene/dev/branches/lucene_solr_5_2/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java
- copied unchanged from r1683950, lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java
Modified:
lucene/dev/branches/lucene_solr_5_2/ (props changed)
lucene/dev/branches/lucene_solr_5_2/solr/ (props changed)
lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_5_2/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
Modified: lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt?rev=1684674&r1=1684673&r2=1684674&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt Wed Jun 10 13:49:05 2015
@@ -46,6 +46,9 @@ Bug Fixes
* SOLR-7655: The DefaultSolrHighlighter since 5.0 was determining if payloads were present in a way
that was slow, especially when lots of fields were highlighted. It's now fast. (David Smiley)
+
+* SOLR-7493: Requests aren't distributed evenly if the collection isn't present locally.
+ (Jeff Wartes, shalin)
Other Changes
----------------------
Modified: lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java?rev=1684674&r1=1684673&r2=1684674&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java (original)
+++ lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java Wed Jun 10 13:49:05 2015
@@ -35,6 +35,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Random;
import java.util.Set;
import org.apache.commons.io.IOUtils;
@@ -109,7 +110,7 @@ import static org.apache.solr.servlet.So
import static org.apache.solr.servlet.SolrDispatchFilter.Action.PROCESS;
import static org.apache.solr.servlet.SolrDispatchFilter.Action.REMOTEQUERY;
import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETRY;
-import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETURN;
+import static org.apache.solr.servlet.SolrDispatchFilter.Action.RETURN;
/**
* This class represents a call made to Solr
@@ -117,6 +118,18 @@ import static org.apache.solr.servlet.So
public class HttpSolrCall {
protected static Logger log = LoggerFactory.getLogger(HttpSolrCall.class);
+ static final Random random;
+ static {
+ // We try to make things reproducible in the context of our tests by initializing the random instance
+ // based on the current seed
+ String seed = System.getProperty("tests.seed");
+ if (seed == null) {
+ random = new Random();
+ } else {
+ random = new Random(seed.hashCode());
+ }
+ }
+
protected final SolrDispatchFilter solrDispatchFilter;
protected final CoreContainer cores;
protected final HttpServletRequest req;
@@ -843,9 +856,16 @@ public class HttpSolrCall {
boolean byCoreName, boolean activeReplicas) {
String coreUrl;
Set<String> liveNodes = clusterState.getLiveNodes();
- for (Slice slice : slices) {
- Map<String, Replica> sliceShards = slice.getReplicasMap();
- for (Replica replica : sliceShards.values()) {
+ List<Slice> randomizedSlices = new ArrayList<>(slices.size());
+ randomizedSlices.addAll(slices);
+ Collections.shuffle(randomizedSlices, random);
+
+ for (Slice slice : randomizedSlices) {
+ List<Replica> randomizedReplicas = new ArrayList<>();
+ randomizedReplicas.addAll(slice.getReplicas());
+ Collections.shuffle(randomizedReplicas, random);
+
+ for (Replica replica : randomizedReplicas) {
if (!activeReplicas || (liveNodes.contains(replica.getNodeName())
&& replica.getState() == Replica.State.ACTIVE)) {
Modified: lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1684674&r1=1684673&r2=1684674&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Wed Jun 10 13:49:05 2015
@@ -93,7 +93,7 @@ public class SolrDispatchFilter extends
String exclude = config.getInitParameter("excludePatterns");
if(exclude != null) {
String[] excludeArray = exclude.split(",");
- excludePatterns = new ArrayList();
+ excludePatterns = new ArrayList<>();
for (String element : excludeArray) {
excludePatterns.add(Pattern.compile(element));
}