diff --git a/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java b/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java index b4c70eaa904..90737b97dbf 100644 --- a/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java +++ b/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java @@ -52,6 +52,7 @@ import org.elasticsearch.common.lease.Releasables; import org.elasticsearch.common.regex.Regex; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentParser; @@ -138,24 +139,27 @@ public class MetaDataCreateIndexService extends AbstractComponent { createIndex(request, listener, mdLock); return; } - - threadPool.executor(ThreadPool.Names.MANAGEMENT).execute(new Runnable() { - @Override - public void run() { - try { - if (!mdLock.tryAcquire(request.masterNodeTimeout().nanos(), TimeUnit.NANOSECONDS)) { - listener.onFailure(new ProcessClusterEventTimeoutException(request.masterNodeTimeout(), "acquire index lock")); + try { + threadPool.executor(ThreadPool.Names.MANAGEMENT).execute(new Runnable() { + @Override + public void run() { + try { + if (!mdLock.tryAcquire(request.masterNodeTimeout().nanos(), TimeUnit.NANOSECONDS)) { + listener.onFailure(new ProcessClusterEventTimeoutException(request.masterNodeTimeout(), "acquire index lock")); + return; + } + } catch (InterruptedException e) { + Thread.interrupted(); + listener.onFailure(e); return; } - } catch (InterruptedException e) { - Thread.interrupted(); - listener.onFailure(e); - return; - } - createIndex(request, listener, mdLock); - } - }); + createIndex(request, listener, mdLock); + } + }); + } catch (EsRejectedExecutionException ex) { + listener.onFailure(ex); + } } public void validateIndexName(String index, ClusterState state) throws ElasticsearchException {