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

Michael McCandless updated LUCENE-1992:
---------------------------------------

    Attachment: LUCENE-1992.patch

Patch attached.  I'll commit shortly on trunk & 2.9.1.

There is a thread hazard that happens when a merge is committing just
as an exception is happening during sync.  There merge actually
changes the segmentInfos, but fails to checkpoint before exiting the
sync block.  If an exception during syncing is handled in another
thread, this can then decRef the newly merged segment to 0, deleting
it too early.

> intermittent failure in TestIndexWriter. testExceptionDuringSync 
> -----------------------------------------------------------------
>
>                 Key: LUCENE-1992
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1992
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>            Priority: Minor
>             Fix For: 3.0
>
>         Attachments: LUCENE-1992.patch
>
>
> {code}
> common.test:
>     [mkdir] Created dir: C:\Projects\lucene\trunk-full1\build\test
>     [junit] Testsuite: org.apache.lucene.index.TestIndexWriter
>     [junit] Tests run: 102, Failures: 0, Errors: 1, Time elapsed: 100,297sec
>     [junit]
>     [junit] Testcase: 
> testExceptionDuringSync(org.apache.lucene.index.TestIndexWriter): Caused an 
> ERROR
>     [junit] _a.fnm
>     [junit] java.io.FileNotFoundException: _a.fnm
>     [junit]     at 
> org.apache.lucene.store.MockRAMDirectory.openInput(MockRAMDirectory.java:226)
>     [junit]     at 
> org.apache.lucene.index.FieldInfos.<init>(FieldInfos.java:68)
>     [junit]     at 
> org.apache.lucene.index.SegmentReader$CoreReaders.<init>(SegmentReader.java:116)
>     [junit]     at 
> org.apache.lucene.index.SegmentReader.get(SegmentReader.java:620)
>     [junit]     at 
> org.apache.lucene.index.SegmentReader.get(SegmentReader.java:590)
>     [junit]     at 
> org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:104)
>     [junit]     at 
> org.apache.lucene.index.ReadOnlyDirectoryReader.<init>(ReadOnlyDirectoryReader.java:27)
>     [junit]     at 
> org.apache.lucene.index.DirectoryReader$1.doBody(DirectoryReader.java:74)
>     [junit]     at 
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:704)
>     [junit]     at 
> org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:69)
>     [junit]     at 
> org.apache.lucene.index.IndexReader.open(IndexReader.java:307)
>     [junit]     at 
> org.apache.lucene.index.IndexReader.open(IndexReader.java:193)
>     [junit]     at 
> org.apache.lucene.index.TestIndexWriter.testExceptionDuringSync(TestIndexWriter.java:2723)
>     [junit]     at 
> org.apache.lucene.util.LuceneTestCase.runBare(LuceneTestCase.java:206)
>     [junit]
>     [junit]
>     [junit] Test org.apache.lucene.index.TestIndexWriter FAILED
> {code}

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