I am trying to use the StreamingUpdateSolrServer to index a bunch of bibliographic data and it is hanging up every time I run it. Sometimes it hangs after about 100k records (after about 2 minutes), sometimes after 4M records (after about 80 minutes) and all different intervals in between. It appears to be the same issue described here:

https://issues.apache.org/jira/browse/SOLR-1543

The thread dump (included below) seems to indicate that a lock isn't being released because somewhere in the thread chain after adding a SolrInputDocument.

Is there some kind of Solr equivalent to closing a session like you do in an ORM like Hibernate?

Thanks,
-Steve
--
Stephen Meyer
Library Application Developer
UW-Madison Libraries
312F Memorial Library
728 State St.
Madison, WI 53706

sme...@library.wisc.edu
608-265-2844 (ph)


"Just don't let the human factor fail to be a factor at all."
- Andrew Bird, "Tables and Chairs"

Full thread dump Java HotSpot(TM) Client VM (1.5.0_22-147 mixed mode):

"pool-1-thread-6" prio=5 tid=0x00d26d50 nid=0x1043c00 in Object.wait() [0xb0e0d000..0xb0e0dd90]
        at java.lang.Object.wait(Native Method)
- waiting on <0x0bbe29f8> (a org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ConnectionPool) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGetConnection(MultiThreadedHttpConnectionManager.java:518) - locked <0x0bbe29f8> (a org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ConnectionPool) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:153) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at org.apache.solr.client.solrj.impl.StreamingUpdateSolrServer$Runner.run(StreamingUpdateSolrServer.java:153) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
        at java.lang.Thread.run(Thread.java:613)

"pool-1-thread-5" prio=5 tid=0x00d11530 nid=0x1042e00 in Object.wait() [0xb0d8c000..0xb0d8cd90]
        at java.lang.Object.wait(Native Method)
- waiting on <0x0bbe29f8> (a org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ConnectionPool) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGetConnection(MultiThreadedHttpConnectionManager.java:518) - locked <0x0bbe29f8> (a org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ConnectionPool) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:153) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at org.apache.solr.client.solrj.impl.StreamingUpdateSolrServer$Runner.run(StreamingUpdateSolrServer.java:153) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
        at java.lang.Thread.run(Thread.java:613)

"MultiThreadedHttpConnectionManager cleanup" daemon prio=5 tid=0x00d13630 nid=0x10fba00 in Object.wait() [0xb0d0b000..0xb0d0bd90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0bbb0270> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
        - locked <0x0bbb0270> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)

"Low Memory Detector" daemon prio=5 tid=0x00d08dc0 nid=0x101ae00 runnable [0x00000000..0x00000000]

"CompilerThread0" daemon prio=9 tid=0x00d08450 nid=0x101a000 waiting on condition [0x00000000..0xb0b077d8]

"Signal Dispatcher" daemon prio=9 tid=0x00d07f60 nid=0x1015400 waiting on condition [0x00000000..0x00000000]

"Finalizer" daemon prio=8 tid=0x00d07690 nid=0x1019200 in Object.wait() [0xb0a05000..0xb0a05d90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0bbb06c0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
        - locked <0x0bbb06c0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x00d072b0 nid=0x1017a00 in Object.wait() [0xb0984000..0xb0984d90]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0bbb00a0> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:474)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x0bbb00a0> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=0x00d013c0 nid=0xb0801000 waiting on condition [0xb07ff000..0xb0800188]
        at sun.misc.Unsafe.park(Native Method)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:253) at org.apache.solr.client.solrj.impl.StreamingUpdateSolrServer.request(StreamingUpdateSolrServer.java:216) at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105)
        at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:64)
at edu.wisc.library.sdg.forward.parser.MarcProcessor.nextFeedItemFromThisWeek(MarcProcessor.java:276) at edu.wisc.library.sdg.forward.parser.MarcProcessor.process(MarcProcessor.java:148)
        at edu.wisc.library.sdg.forward.App.main(App.java:36)

"VM Thread" prio=9 tid=0x00d06a10 nid=0x1016600 runnable

"VM Periodic Task Thread" prio=9 tid=0x00d09a40 nid=0x101bc00 waiting on condition

"Exception Catcher Thread" prio=10 tid=0x00d015e0 nid=0x100a800 runnable

Reply via email to