You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2014/01/17 02:48:42 UTC

svn commit: r1558978 - in /lucene/dev/trunk/solr: ./ core/src/java/org/apache/solr/update/ core/src/java/org/apache/solr/update/processor/ solrj/src/java/org/apache/solr/client/solrj/impl/

Author: markrmiller
Date: Fri Jan 17 01:48:41 2014
New Revision: 1558978

URL: http://svn.apache.org/r1558978
Log:
SOLR-4260: ConcurrentUpdateSolrServer#blockUntilFinished can return before all previously added updates have finished. This could cause distributed updates meant for replicas to be lost.

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1558978&r1=1558977&r2=1558978&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri Jan 17 01:48:41 2014
@@ -378,6 +378,11 @@ Bug Fixes
 * SOLR-5618: Fix false cache hits in queryResultCache when hashCodes are equal 
   and duplicate filter queries exist in one of the requests (hossman)
 
+* SOLR-4260: ConcurrentUpdateSolrServer#blockUntilFinished can return before
+  all previously added updates have finished. This could cause distributed
+  updates meant for replicas to be lost. (Markus Jelsma, Timothy Potter,
+  Joel Bernstein)
+
 Optimizations
 ----------------------  
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java?rev=1558978&r1=1558977&r2=1558978&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java Fri Jan 17 01:48:41 2014
@@ -25,7 +25,6 @@ import java.util.List;
 import org.apache.solr.client.solrj.SolrServer;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrServer;
-import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.SolrException;

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java?rev=1558978&r1=1558977&r2=1558978&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java Fri Jan 17 01:48:41 2014
@@ -31,9 +31,7 @@ import org.apache.solr.client.solrj.Solr
 import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
 import org.apache.solr.client.solrj.impl.BinaryResponseParser;
 import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrServer;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.update.SolrCmdDistributor.Error;
 import org.apache.solr.update.processor.DistributedUpdateProcessor;
 import org.apache.solr.update.processor.DistributingUpdateProcessorFactory;
@@ -53,11 +51,6 @@ public class StreamingSolrServers {
   public StreamingSolrServers(UpdateShardHandler updateShardHandler) {
     this.updateExecutor = updateShardHandler.getUpdateExecutor();
     
-    ModifiableSolrParams params = new ModifiableSolrParams();
-    params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, false);
-    params.set(HttpClientUtil.PROP_CONNECTION_TIMEOUT, 30000);
-    params.set(HttpClientUtil.PROP_USE_RETRY, false);
-    
     httpClient = updateShardHandler.getHttpClient();
   }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java?rev=1558978&r1=1558977&r2=1558978&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java Fri Jan 17 01:48:41 2014
@@ -146,11 +146,11 @@ public class DistributedUpdateProcessor 
   
   private SolrCmdDistributor cmdDistrib;
 
-  private boolean zkEnabled = false;
+  private final boolean zkEnabled;
 
   private CloudDescriptor cloudDesc;
-  private String collection;
-  private ZkController zkController;
+  private final String collection;
+  private final ZkController zkController;
   
   // these are setup at the start of each request processing
   // method in this update processor
@@ -193,6 +193,8 @@ public class DistributedUpdateProcessor 
     
     if (cloudDesc != null) {
       collection = cloudDesc.getCollectionName();
+    } else {
+      collection = null;
     }
 
   }

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java?rev=1558978&r1=1558977&r2=1558978&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java Fri Jan 17 01:48:41 2014
@@ -344,7 +344,6 @@ public class ConcurrentUpdateSolrServer 
             // successfully, *and*
             // while we are still holding the runners lock to prevent race
             // conditions.
-            // race conditions.
             if (success)
               break;
           }
@@ -387,7 +386,8 @@ public class ConcurrentUpdateSolrServer 
         synchronized (runners) {
           runner = runners.peek();
         }
-        if (runner == null || scheduler.isTerminated())
+
+        if ((runner == null && queue.isEmpty()) || scheduler.isTerminated())
           break;
         runner.runnerLock.lock();
         runner.runnerLock.unlock();