[ 
https://issues.apache.org/jira/browse/SOLR-1711?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992224#comment-12992224
 ] 

Aakarsh Nair commented on SOLR-1711:
------------------------------------

We are still seeing this issue even after using Johannes fix. All runners are 
exiting  and the main producer thread hangs on line 196 queue.put . I am 
thinking it may be because queue is getting drained and filled fast (queue size 
50 , number of threads 20) . So there might be a race condition on the queue 
capacity check.Queue appears to be below capacity to the last runner  
then  fills up by simultaneous calls to put . I still see the issue after 
backporting  what is in 3.x branch for testing it with solr 1.4.1. I guess a 
solution may be to use larger queue capacities for now but the race conditions 
still seem to be present.

> Race condition in 
> org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java
> ----------------------------------------------------------------------------------
>
>                 Key: SOLR-1711
>                 URL: https://issues.apache.org/jira/browse/SOLR-1711
>             Project: Solr
>          Issue Type: Bug
>          Components: clients - java
>    Affects Versions: 1.4, 1.5
>            Reporter: Attila Babo
>            Assignee: Yonik Seeley
>            Priority: Critical
>             Fix For: 1.4.1, 1.5, 3.1, 4.0
>
>         Attachments: StreamingUpdateSolrServer.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> While inserting a large pile of documents using StreamingUpdateSolrServer 
> there is a race condition as all Runner instances stop processing while the 
> blocking queue is full. With a high performance client this could happen 
> quite often, there is no way to recover from it at the client side.
> In StreamingUpdateSolrServer there is a BlockingQueue called queue to store 
> UpdateRequests, there are up to threadCount number of workers threads from 
> StreamingUpdateSolrServer.Runner to read that queue and push requests to a 
> Solr instance. If at one point the BlockingQueue is empty all workers stop 
> processing it and pushing the collected content to Solr which could be a time 
> consuming process, sometimes all worker threads are waiting for Solr. If at 
> this time the client fills the BlockingQueue to full all worker threads will 
> quit without processing any further and the main thread will block forever.
> There is a simple, well tested patch attached to handle this situation.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to