Ian Boston 2011-11-11, 02:03
This may be related to SOLR-1711 and/or SOLR-1543, however I read the
archives and the issues and think I am running code where these issues
have been fixed.
I am running a snapshot of Solr4 at revision 1040465, which was about
Feb 2011 IIRC, and I am testing recovery of the client when the master
Solr instance in a cluster dies. The indexer uses a
StreamingUpdateSolrServer. When the master Solr instance dies the
client commits fail with a java.net.ConnectException on the commit
operation which bubbles back up the stack to the SolrJ client. The
runner threads retry several times and eventually fail, emptying the
When the master Solr instance comes back online, I see the runner
threads re-trying and I think succeeding, but the SolrJ client thread
ends up in this state (forever). There are no runner threads (in my
case pool-2-thread-x) present in the thread dump.
"IndexerQueueDispatch" daemon prio=10 tid=0x00007f87949e0000
nid=0x7f68 waiting on condition [0x00007f87928a7000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000b2277390> (a
I can reproduce with ease.
I suspect using a CommonsHttpSolrServer will fix the problem, as it
will make indexing single threaded on the client side, which I would
like to avoid if possible.
Is this something that has been seen before now?
Is there a fix in a later revision?
(btw, since this is snapshot code I thought the dev list was the best
place to ask the question, please say if I should re-post on the users
list. Also, if its been fixed already, please just post a pointer or
something to search for and tell me to go away and read it :))
Ian Boston 2011-11-11, 04:58