lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael McCandless (JIRA)" <>
Subject [jira] Updated: (LUCENE-1200) IndexWriter.addIndexes* can deadlock in rare cases
Date Tue, 04 Mar 2008 10:18:40 GMT


Michael McCandless updated LUCENE-1200:

    Attachment: LUCENE-1200.patch

Attached patch.  I plan to commit in a day or two.

> IndexWriter.addIndexes* can deadlock in rare cases
> --------------------------------------------------
>                 Key: LUCENE-1200
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>    Affects Versions: 2.4
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>            Priority: Minor
>             Fix For: 2.4
>         Attachments: LUCENE-1200.patch
> In somewhat rare cases it's possible for addIndexes to deadlock
> because it is a synchronized method.
> Normally the merges that are necessary for addIndexes are done
> serially (with the primary thread) because they involve segments from
> an external directory.  However, if mergeFactor of these merges
> complete then a merge becomes necessary for the merged segments, which
> are not external, and so it can run in the background.  If too many BG
> threads need to run (currently > 4) then the "pause primary thread"
> approach adopted in LUCENE-1164 will deadlock, because the addIndexes
> method is holding a lock on IndexWriter.
> This was appearing as a intermittant deadlock in the
> TestIndexWriterMerging test case.
> This issue is not present in 2.3 (it was caused by LUCENE-1164).
> The solution is to shrink the scope of synchronization: don't
> synchronize on the whole method & wrap synchronized(this) in the right
> places inside the methods.

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:
For additional commands, e-mail:

View raw message