lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Sale (JIRA)" <>
Subject [jira] Created: (LUCENE-1544) Deadlock: IndexWriter.addIndexes(IndexReader[])
Date Thu, 19 Feb 2009 19:22:02 GMT
Deadlock: IndexWriter.addIndexes(IndexReader[])

                 Key: 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

A deadlock issue occurs under the following circumstances
- IndexWriter.autoCommit == true
- 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:
For additional commands, e-mail:

View raw message