You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Michael McCandless (JIRA)" <ji...@apache.org> on 2009/02/22 13:23:01 UTC

[jira] Commented: (LUCENE-1544) Deadlock: IndexWriter.addIndexes(IndexReader[])

    [ https://issues.apache.org/jira/browse/LUCENE-1544?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675645#action_12675645 ] 

Michael McCandless commented on LUCENE-1544:
--------------------------------------------

Committed revision 746661 on trunk.

> Deadlock: IndexWriter.addIndexes(IndexReader[])
> -----------------------------------------------
>
>                 Key: LUCENE-1544
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1544
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>    Affects Versions: 2.4
>         Environment: should be ubiquitous... but, Win XP on a MacBookPro (Intel) under Eclipse (Ganymede) using default compiler/runtime
>            Reporter: Doug Sale
>            Assignee: Michael McCandless
>             Fix For: 2.4.1, 2.9
>
>         Attachments: LUCENE-1544.patch, TestAddIndexes.java
>
>
> A deadlock issue occurs under the following circumstances
> - IndexWriter.autoCommit == true
> - IndexWriter.directory contains multiple segments
> - IndexWriter.AddIndex(IndexReader[]) is invoked
> I put together a JUnit test that recreates the deadlock, which I've attached.  It is the first test method, 'testAddIndexByIndexReader()'.
> In a nutshell, here is what happens:
>         // 1) AddIndexes(IndexReader[]) acquires the write lock,
>         // then begins optimization of destination index (this is
>         // prior to adding any external segments).
>         //
>         // 2) Main thread starts a ConcurrentMergeScheduler.MergeThread
>         // to merge the 2 segments.
>         //
>         // 3) Merging thread tries to acquire the read lock at
>         // IndexWriter.blockAddIndexes(boolean) in
>         // IndexWriter.StartCommit(), but cannot as...
>         //
>         // 4) Main thread still holds the write lock, and is
>         // waiting for the IndexWriter.runningMerges data structure
>         // to be devoid of merges with their optimize flag
>         // set (IndexWriter.optimizeMergesPending()).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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