mirror of
https://github.com/apache/lucene.git
synced 2025-02-24 11:16:35 +00:00
SOLR-5476 hardened a bit
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1560279 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
27b98b7936
commit
bd04876772
@ -291,9 +291,12 @@ public class OverseerCollectionProcessor implements Runnable, ClosableThread {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!overseerDesignates.contains( getLeaderNode(zkStateReader.getZkClient())) && !availableDesignates.isEmpty()){
|
||||
String leaderNode = getLeaderNode(zkStateReader.getZkClient());
|
||||
if(leaderNode ==null) return;
|
||||
if(!overseerDesignates.contains(leaderNode) && !availableDesignates.isEmpty()){
|
||||
//this means there are designated Overseer nodes and I am not one of them , kill myself
|
||||
invokeRejoinOverseer(nodeNames.get(0));
|
||||
log.info("I am not an overseerdesignate , rejoining election {} ", leaderNode);
|
||||
invokeRejoinOverseer(leaderNode);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ import java.util.Set;
|
||||
import static org.apache.solr.cloud.OverseerCollectionProcessor.MAX_SHARDS_PER_NODE;
|
||||
import static org.apache.solr.cloud.OverseerCollectionProcessor.NUM_SLICES;
|
||||
import static org.apache.solr.cloud.OverseerCollectionProcessor.REPLICATION_FACTOR;
|
||||
import static org.apache.solr.cloud.OverseerCollectionProcessor.getSortedNodeNames;
|
||||
import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
|
||||
import static org.apache.solr.common.params.CollectionParams.CollectionAction;
|
||||
|
||||
@ -95,9 +96,8 @@ public class OverseerRolesTest extends AbstractFullDistribZkTestBase{
|
||||
createCollection(collectionName, client);
|
||||
|
||||
waitForRecoveriesToFinish(collectionName, false);
|
||||
Set<String> nodes = client.getZkStateReader().getClusterState().getLiveNodes();
|
||||
List<String> l = OverseerCollectionProcessor.getSortedNodeNames(client.getZkStateReader().getZkClient()) ;
|
||||
|
||||
ArrayList<String> l = new ArrayList<>(nodes);
|
||||
log.info("All nodes {}", l);
|
||||
String currentLeader = OverseerCollectionProcessor.getLeaderNode(client.getZkStateReader().getZkClient());
|
||||
log.info("Current leader {} ", currentLeader);
|
||||
@ -108,7 +108,7 @@ public class OverseerRolesTest extends AbstractFullDistribZkTestBase{
|
||||
log.info("overseerDesignate {}",overseerDesignate);
|
||||
setOverseerRole(CollectionAction.ADDROLE,overseerDesignate);
|
||||
|
||||
long timeout = System.currentTimeMillis()+10000;
|
||||
long timeout = System.currentTimeMillis()+15000;
|
||||
|
||||
boolean leaderchanged = false;
|
||||
for(;System.currentTimeMillis() < timeout;){
|
||||
@ -119,6 +119,11 @@ public class OverseerRolesTest extends AbstractFullDistribZkTestBase{
|
||||
}
|
||||
Thread.sleep(100);
|
||||
}
|
||||
if(!leaderchanged){
|
||||
log.warn("expected {}, current order {}",
|
||||
overseerDesignate,
|
||||
getSortedNodeNames(client.getZkStateReader().getZkClient())+ " ldr :"+ OverseerCollectionProcessor.getLeaderNode(client.getZkStateReader().getZkClient()) );
|
||||
}
|
||||
assertTrue("could not set the new overseer",leaderchanged);
|
||||
|
||||
|
||||
@ -137,10 +142,7 @@ public class OverseerRolesTest extends AbstractFullDistribZkTestBase{
|
||||
timeout = System.currentTimeMillis()+10000;
|
||||
leaderchanged = false;
|
||||
for(;System.currentTimeMillis() < timeout;){
|
||||
// log.info(" count {}", System.currentTimeMillis());
|
||||
|
||||
//
|
||||
List<String> sortedNodeNames = OverseerCollectionProcessor.getSortedNodeNames(client.getZkStateReader().getZkClient());
|
||||
List<String> sortedNodeNames = getSortedNodeNames(client.getZkStateReader().getZkClient());
|
||||
if(sortedNodeNames.get(1) .equals(anotherOverseer) || sortedNodeNames.get(0).equals(anotherOverseer)){
|
||||
leaderchanged =true;
|
||||
break;
|
||||
@ -148,7 +150,7 @@ public class OverseerRolesTest extends AbstractFullDistribZkTestBase{
|
||||
Thread.sleep(100);
|
||||
}
|
||||
|
||||
assertTrue("New overseer not the frontrunner : "+ OverseerCollectionProcessor.getSortedNodeNames(client.getZkStateReader().getZkClient()) + " expected : "+ anotherOverseer, leaderchanged);
|
||||
assertTrue("New overseer not the frontrunner : "+ getSortedNodeNames(client.getZkStateReader().getZkClient()) + " expected : "+ anotherOverseer, leaderchanged);
|
||||
|
||||
|
||||
client.shutdown();
|
||||
|
Loading…
x
Reference in New Issue
Block a user