This commit is contained in:
kimchy 2010-10-17 01:52:23 +02:00
parent 4708d31040
commit caa6495e2b
1 changed files with 3 additions and 5 deletions

View File

@ -154,11 +154,8 @@ public class LocalGatewayNodeAllocation extends NodeAllocation {
RoutingNodes routingNodes = allocation.routingNodes(); RoutingNodes routingNodes = allocation.routingNodes();
for (IndexRoutingTable indexRoutingTable : routingNodes.routingTable()) { for (IndexRoutingTable indexRoutingTable : routingNodes.routingTable()) {
// only do the allocation if there is a local "INDEX NOT RECOVERED" block // TODO we need to also handle a case where all shards per replication group are unassigned, in that case, we ignore until we
if (!routingNodes.blocks().hasIndexBlock(indexRoutingTable.index(), LocalGateway.INDEX_NOT_RECOVERED_BLOCK)) { // manage to find a place to allocate them...
continue;
}
if (indexRoutingTable.allPrimaryShardsUnassigned()) { if (indexRoutingTable.allPrimaryShardsUnassigned()) {
// all primary are unassigned for the index, see if we can allocate it on existing nodes, if not, don't assign // all primary are unassigned for the index, see if we can allocate it on existing nodes, if not, don't assign
Set<String> nodesIds = Sets.newHashSet(); Set<String> nodesIds = Sets.newHashSet();
@ -248,6 +245,7 @@ public class LocalGatewayNodeAllocation extends NodeAllocation {
return changed; return changed;
} }
// go ahead and see if we can optimize replica allocation to an existing node...
Iterator<MutableShardRouting> unassignedIterator = routingNodes.unassigned().iterator(); Iterator<MutableShardRouting> unassignedIterator = routingNodes.unassigned().iterator();
while (unassignedIterator.hasNext()) { while (unassignedIterator.hasNext()) {
MutableShardRouting shard = unassignedIterator.next(); MutableShardRouting shard = unassignedIterator.next();