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

Michael McCandless resolved LUCENE-1547.
----------------------------------------

    Resolution: Fixed

Fixed on 2.9 & 2.4.1.

> Rare thread hazard in IndexWriter.commit()
> ------------------------------------------
>
>                 Key: LUCENE-1547
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1547
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>    Affects Versions: 2.4
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>            Priority: Minor
>             Fix For: 2.4.1, 2.9
>
>         Attachments: LUCENE-1547.patch
>
>
> The nightly build 2 nights ago hit this:
> {code}
>  NOTE: random seed of testcase 'testAtomicUpdates' was: -5065675995121791051
>     [junit] ------------- ---------------- ---------------
>     [junit] Testcase: 
> testAtomicUpdates(org.apache.lucene.index.TestAtomicUpdate):    FAILED
>     [junit] expected:<100> but was:<91>
>     [junit] junit.framework.AssertionFailedError: expected:<100> but was:<91>
>     [junit]   at 
> org.apache.lucene.index.TestAtomicUpdate.runTest(TestAtomicUpdate.java:142)
>     [junit]   at 
> org.apache.lucene.index.TestAtomicUpdate.testAtomicUpdates(TestAtomicUpdate.java:194)
>     [junit]   at 
> org.apache.lucene.util.LuceneTestCase.runTest(LuceneTestCase.java:88)
> {code}
> It's an intermittant failure that only happens when multiple threads
> are calling commit() at once.  With autoComit=true and
> ConcurrentMergeScheduler, this can happen more often because each
> merge thread calls commit after it's done.
> The problem happens when one thread has already begun the commit
> process, but another two or more threads then come along wanting to
> also commit after further changes have happened.  Those two or more
> threads would wait until the currently committing thread finished, and
> then they'd wake up and do their commit.  The problem was, after
> waking up they would fail to check whether they had been superseded,
> ie whether another thread had already committed more up-to-date
> changes.
> The fix is simple -- after waking up, check again if your commit has
> been superseded, and skip your commit if so.

-- 
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-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to