From 8ceba0dca122b71da711032ae9e0d6c6232d731a Mon Sep 17 00:00:00 2001 From: kimchy Date: Tue, 9 Nov 2010 15:42:27 +0200 Subject: [PATCH] don't overflow with cluster events if the index level block was removed already --- .../java/org/elasticsearch/gateway/GatewayService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/gateway/GatewayService.java b/modules/elasticsearch/src/main/java/org/elasticsearch/gateway/GatewayService.java index 015b8088040..0a15209be38 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/gateway/GatewayService.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/gateway/GatewayService.java @@ -178,6 +178,14 @@ public class GatewayService extends AbstractLifecycleComponent i if (indexRoutingTable != null && indexRoutingTable.allPrimaryShardsActive()) { clusterService.submitStateUpdateTask("remove-index-block (all primary shards active for [" + index + "])", new ClusterStateUpdateTask() { @Override public ClusterState execute(ClusterState currentState) { + // check if the block was removed... + if (!currentState.blocks().indices().containsKey(index)) { + return currentState; + } + // check if the block was removed... + if (!currentState.blocks().indices().get(index).contains(GatewayService.INDEX_NOT_RECOVERED_BLOCK)) { + return currentState; + } ClusterBlocks.Builder blocks = ClusterBlocks.builder().blocks(currentState.blocks()); blocks.removeIndexBlock(index, GatewayService.INDEX_NOT_RECOVERED_BLOCK); return ClusterState.builder().state(currentState).blocks(blocks).build();