[ 
https://issues.apache.org/jira/browse/LUCENE-5002?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simon Willnauer reassigned LUCENE-5002:
---------------------------------------

    Assignee: Simon Willnauer
    
> Deadlock in DocumentsWriterFlushControl
> ---------------------------------------
>
>                 Key: LUCENE-5002
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5002
>             Project: Lucene - Core
>          Issue Type: Bug
>    Affects Versions: 4.3
>         Environment: OpenJDK 64-Bit Server VM (23.7-b01 mixed mode)
> Linux Ubuntu Server 12.04 LTS 64-Bit
>            Reporter: Sergiusz Urbaniak
>            Assignee: Simon Willnauer
>
> Hi all,
> We have an obvious deadlock between a "MaybeRefreshIndexJob" thread
> calling ReferenceManager.maybeRefresh(ReferenceManager.java:204) and a
> "RebuildIndexJob" thread calling
> IndexWriter.deleteAll(IndexWriter.java:2065).
> Lucene wants to flush in the "MaybeRefreshIndexJob" thread trying to 
> intrinsically lock the IndexWriter instance at 
> {{DocumentsWriterPerThread.java:563}} before notifyAll()ing the flush. 
> Simultaneously the "RebuildIndexJob" thread who already intrinsically locked 
> the IndexWriter instance at IndexWriter#deleteAll wait()s at 
> {{DocumentsWriterFlushControl.java:245}} for the flush forever causing a 
> deadlock.
> {code}
> "MaybeRefreshIndexJob Thread - 2" daemon prio=10 tid=0x00007f8fe4006000 
> nid=0x1ac2 waiting for monitor entry [0x00007f8fa7bf7000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
>       at 
> org.apache.lucene.index.IndexWriter.useCompoundFile(IndexWriter.java:2223)
>       - waiting to lock <0x00000000f1c00438> (a 
> org.apache.lucene.index.IndexWriter)
>       at 
> org.apache.lucene.index.DocumentsWriterPerThread.sealFlushedSegment(DocumentsWriterPerThread.java:563)
>       at 
> org.apache.lucene.index.DocumentsWriterPerThread.flush(DocumentsWriterPerThread.java:533)
>       at 
> org.apache.lucene.index.DocumentsWriter.doFlush(DocumentsWriter.java:422)
>       at 
> org.apache.lucene.index.DocumentsWriter.flushAllThreads(DocumentsWriter.java:559)
>       at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:365)
>       - locked <0x00000000f1c007d0> (a java.lang.Object)
>       at 
> org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:270)
>       at 
> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:245)
>       at 
> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:235)
>       at 
> org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:170)
>       at 
> org.apache.lucene.search.SearcherManager.refreshIfNeeded(SearcherManager.java:118)
>       at 
> org.apache.lucene.search.SearcherManager.refreshIfNeeded(SearcherManager.java:58)
>       at 
> org.apache.lucene.search.ReferenceManager.doMaybeRefresh(ReferenceManager.java:155)
>       at 
> org.apache.lucene.search.ReferenceManager.maybeRefresh(ReferenceManager.java:204)
>       at jobs.MaybeRefreshIndexJob.timeout(MaybeRefreshIndexJob.java:47)
> "RebuildIndexJob Thread - 1" prio=10 tid=0x00007f903000a000 nid=0x1a38 in 
> Object.wait() [0x00007f9037dd6000]
>    java.lang.Thread.State: WAITING (on object monitor)
>       at java.lang.Object.wait(Native Method)
>       - waiting on <0x00000000f1c0c240> (a 
> org.apache.lucene.index.DocumentsWriterFlushControl)
>       at java.lang.Object.wait(Object.java:503)
>       at 
> org.apache.lucene.index.DocumentsWriterFlushControl.waitForFlush(DocumentsWriterFlushControl.java:245)
>       - locked <0x00000000f1c0c240> (a 
> org.apache.lucene.index.DocumentsWriterFlushControl)
>       at 
> org.apache.lucene.index.DocumentsWriter.abort(DocumentsWriter.java:235)
>       - locked <0x00000000f1c05370> (a 
> org.apache.lucene.index.DocumentsWriter)
>       at org.apache.lucene.index.IndexWriter.deleteAll(IndexWriter.java:2065)
>       - locked <0x00000000f1c00438> (a org.apache.lucene.index.IndexWriter)
>       at jobs.RebuildIndexJob.buildIndex(RebuildIndexJob.java:102)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
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