(Sebong Oh) #1

We have two nodes. The one is node client and other is master node.
I've executed a test case using elasticsearch-0.16.2 as follows.

  1. send a create index 'data' request to master node at node client.
  2. wait until 'data' index becomes green state at node client.
  3. send a index request to 'data' index at node client..

but it resulted in IndexMissingException.

org.elasticsearch.indices.IndexMissingException: [data] missing
at org.elasticsearch.cluster.metadata.MetaData.concreteIndex(
at org.elasticsearch.action.index.TransportIndexAction.innerExecute(
at org.elasticsearch.action.index.TransportIndexAction.access$000(
at org.elasticsearch.action.index.TransportIndexAction$1.onFailure(
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
at java.util.concurrent.ThreadPoolExecutor$

Checking existence of 'data' index was failed at "org.elasticsearch.action.index.TransportIndexAction.doExecute([in 'index' executor]

So. TransportIndexAction tried to create 'data' index but also failed because of index already exists. [in 'clusterService#updateTask' executor ]

After failure of creating 'data' index "org.elasticsearch.action.index.TransportIndexAction$1.onFailure(" is invoked
but. ClusterState dosen't have 'data' index. so it thrown IndexMissingException [in 'index' executor ]

I don't know the reason of this problem.
InternalClusterService.clusterState is volatile and there is no delete index operation between creating index and index request.

(system) #2