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:
Noble Paul 2014-01-22 08:41:50 +00:00
parent 27b98b7936
commit bd04876772
2 changed files with 15 additions and 10 deletions

View File

@ -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);
}
}

View File

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