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();