mirror of https://github.com/apache/lucene.git
cloud: fix distributed deadlock w/ deleteByQuery
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1295665 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e894e7c542
commit
07865addca
|
@ -207,7 +207,7 @@ public class DistributedUpdateProcessor extends UpdateRequestProcessor {
|
||||||
return cloudState.getShard(hash, collection);
|
return cloudState.getShard(hash, collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
// used for deleteByQyery to get the list of nodes this leader should forward to
|
// used for deleteByQuery to get the list of nodes this leader should forward to
|
||||||
private List<Node> setupRequest() {
|
private List<Node> setupRequest() {
|
||||||
List<Node> nodes = null;
|
List<Node> nodes = null;
|
||||||
String shardId = cloudDesc.getShardId();
|
String shardId = cloudDesc.getShardId();
|
||||||
|
@ -622,20 +622,6 @@ public class DistributedUpdateProcessor extends UpdateRequestProcessor {
|
||||||
|
|
||||||
doLocalDelete(cmd);
|
doLocalDelete(cmd);
|
||||||
|
|
||||||
// forward to all replicas
|
|
||||||
if (replicas != null) {
|
|
||||||
ModifiableSolrParams params = new ModifiableSolrParams(req.getParams());
|
|
||||||
params.set(DELETE_BY_QUERY_LEVEL, 3);
|
|
||||||
params.set(VERSION_FIELD, Long.toString(cmd.getVersion()));
|
|
||||||
params.set(SEEN_LEADER, "true");
|
|
||||||
cmdDistrib.distribDelete(cmd, replicas, params);
|
|
||||||
|
|
||||||
// wait for DBQ responses before releasing the update block to eliminate the possibility
|
|
||||||
// of an add being reordered.
|
|
||||||
// TODO: this isn't strictly necessary - we could do the same thing we do for PeerSync
|
|
||||||
// in DUH2 and add a clause that prevents deleting older docs.
|
|
||||||
cmdDistrib.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cmd.setVersion(-versionOnUpdate);
|
cmd.setVersion(-versionOnUpdate);
|
||||||
|
@ -659,6 +645,20 @@ public class DistributedUpdateProcessor extends UpdateRequestProcessor {
|
||||||
vinfo.unblockUpdates();
|
vinfo.unblockUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: need to handle reorders to replicas somehow
|
||||||
|
// forward to all replicas
|
||||||
|
if (leaderLogic && replicas != null) {
|
||||||
|
ModifiableSolrParams params = new ModifiableSolrParams(req.getParams());
|
||||||
|
params.set(DELETE_BY_QUERY_LEVEL, 3);
|
||||||
|
params.set(VERSION_FIELD, Long.toString(cmd.getVersion()));
|
||||||
|
params.set(SEEN_LEADER, "true");
|
||||||
|
cmdDistrib.distribDelete(cmd, replicas, params);
|
||||||
|
cmdDistrib.finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (returnVersions && rsp != null) {
|
if (returnVersions && rsp != null) {
|
||||||
if (deleteByQueryResponse == null) {
|
if (deleteByQueryResponse == null) {
|
||||||
deleteByQueryResponse = new NamedList<String>();
|
deleteByQueryResponse = new NamedList<String>();
|
||||||
|
|
Loading…
Reference in New Issue