If I index a bunch of items, then search without waiting for the indexing to finish, I get "Failed to execute phase"

I have a situation where, using the Java API, I initiate a bunch of
indexing operations, but throw away the Future object (I don't need the
return status). This is so I can do a lot of indexing reasonably
asynchronously, so I don't have to hold up the GUI that triggers these
calls.

However, if I fire off these indexing operations, and immediately after do
a search operation on the same index, I get the following exception:

Caused by: org.elasticsearch.action.search.SearchPhaseExecutionException:
Failed to execute phase [init_scan], all shards failed
at
org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:233)
[elasticsearch-1.4.1.jar:]
at
org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$1.onFailure(TransportSearchTypeAction.java:179)
[elasticsearch-1.4.1.jar:]
at
org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:565)
[elasticsearch-1.4.1.jar:]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_60]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_60]
... 1 more

... however, if I wait awhile after indexing before searching, the search
succeeds, no errors.

Does anyone know what is going on there? Shouldn't initiating an index
operation asynchronously not affect search operations made on the same
client?

I'm using a TransportClient, the same one for all operations.

  • Tim

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/7be3f287-edb3-4979-93c0-38e98317a545%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

I made a mistake in my statement above - I am using different
TransportClients for the indexing and the searching... so, one is doing the
indexing, and while that is going on, I'm doing the searching on a
different one.

  • Tim

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/5011f21b-cbde-4bb8-9630-895a9d4fc684%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Final bit of info, and this seems important; one TransportClient is being
run in one thread, the other in another... so it goes like this:

Thread 1: Fork Thread 1
Thread 2: Create new TransportClient; Index list of items, not waiting for
Future objects (i.e. not calling actionGet())
Thread 1: While Thread 2 is running, create new TransportClient and do
search

... that's when I get the exception above.

  • Tim

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/6171a5f7-ee20-4f7b-9d41-a8d2016f2dd6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

I wish I could just go back and edit prior postings. :slight_smile:

... I should mention, if I do the above, but don't create 2 threads - that
is, synchronously index each item, close the TransportClient, create
another TransportClient and do the search, it works. So this is ONLY
happening when the two actions are happening in different threads.

  • Tim

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/8cb89867-d5fa-43f5-8325-d89a50ba5f82%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.