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 2015/11/13 23:09:18 UTC
svn commit: r1714272 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/CHANGES.txt solr/core/
solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
Author: markrmiller
Date: Fri Nov 13 22:09:18 2015
New Revision: 1714272
URL: http://svn.apache.org/viewvc?rev=1714272&view=rev
Log:
SOLR-8288: DistributedUpdateProcessor#doFinish should explicitly check and ensure it does not try to put itself into LIR.
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1714272&r1=1714271&r2=1714272&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Fri Nov 13 22:09:18 2015
@@ -274,6 +274,8 @@ Optimizations
more than doubled the performance of faceting 5M documents over a field with 1M unique values.
(yonik)
+* SOLR-8288: DistributedUpdateProcessor#doFinish should explicitly check and ensure it
+ does not try to put itself into LIR. (Mark Miller)
Other Changes
----------------------
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java?rev=1714272&r1=1714271&r2=1714272&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java Fri Nov 13 22:09:18 2015
@@ -36,7 +36,6 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRefBuilder;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.cloud.CloudDescriptor;
-import org.apache.solr.cloud.LeaderInitiatedRecoveryThread;
import org.apache.solr.cloud.DistributedQueue;
import org.apache.solr.cloud.Overseer;
import org.apache.solr.cloud.ZkController;
@@ -844,10 +843,11 @@ public class DistributedUpdateProcessor
// before we go setting other replicas to down, make sure we're still the leader!
String leaderCoreNodeName = null;
Exception getLeaderExc = null;
+ Replica leaderProps = null;
try {
- Replica leader = zkController.getZkStateReader().getLeader(collection, shardId);
- if (leader != null) {
- leaderCoreNodeName = leader.getName();
+ leaderProps = zkController.getZkStateReader().getLeader(collection, shardId);
+ if (leaderProps != null) {
+ leaderCoreNodeName = leaderProps.getName();
}
} catch (Exception exc) {
getLeaderExc = exc;
@@ -875,7 +875,9 @@ public class DistributedUpdateProcessor
continue;
}
- if (cloudDesc.getCoreNodeName().equals(leaderCoreNodeName) && foundErrorNodeInReplicaList) {
+ if (leaderCoreNodeName != null && cloudDesc.getCoreNodeName().equals(leaderCoreNodeName) // we are still same leader
+ && foundErrorNodeInReplicaList // we found an error for one of replicas
+ && !stdNode.getNodeProps().getCoreUrl().equals(leaderProps.getCoreUrl())) { // we do not want to put ourself into LIR
try {
// if false, then the node is probably not "live" anymore
// and we do not need to send a recovery message
@@ -900,9 +902,9 @@ public class DistributedUpdateProcessor
log.warn("Core "+cloudDesc.getCoreNodeName()+" belonging to "+collection+" "+
shardId+", does not have error'd node " + stdNode.getNodeProps().getCoreUrl() + " as a replica. " +
"No request recovery command will be sent!");
- } else {
- log.warn("Core "+cloudDesc.getCoreNodeName()+" is no longer the leader for "+collection+" "+
- shardId+", no request recovery command will be sent!");
+ } else {
+ log.warn("Core " + cloudDesc.getCoreNodeName() + " is no longer the leader for " + collection + " "
+ + shardId + " or we tried to put ourself into LIR, no request recovery command will be sent!");
}
}
}