[
https://issues.apache.org/jira/browse/LUCENE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16832487#comment-16832487
]
Dawid Weiss commented on LUCENE-8785:
-------------------------------------
bq. I want to understand why, in such a rather edgy case a user can't do
exactly this.
The difference exists for people who manage several commits in the past. A
deleteAll leaves an empty commit, but other threads and applications can still
access the commit history (and can do so, even concurrently while deleteAll is
being called).
Don't know whether this is particularly common (perhaps not), but it's a fairly
valid use case (creating an "empty" commit by wiping any existing content).
> TestIndexWriterDelete.testDeleteAllNoDeadlock failure
> -----------------------------------------------------
>
> Key: LUCENE-8785
> URL: https://issues.apache.org/jira/browse/LUCENE-8785
> Project: Lucene - Core
> Issue Type: Bug
> Components: core/index
> Affects Versions: 7.6
> Environment: OpenJDK 1.8.0_202
> Reporter: Michael McCandless
> Priority: Minor
>
> I was running Lucene's core tests on an {{i3.16xlarge}} EC2 instance (64
> cores), and hit this random yet spooky failure:
> {noformat}
> [junit4] 2> NOTE: reproduce with: ant test
> -Dtestcase=TestIndexWriterDelete -Dtests.method=testDeleteAllNoDeadLock
> -Dtests.seed=952BE262BA547C1 -Dtests.slow=true -Dtests.badapples=true
> -Dtests.locale=ar-YE -Dtests.timezone=Europe/Lisbon -Dtests.as\
> serts=true -Dtests.file.encoding=US-ASCII
> [junit4] ERROR 0.16s J3 | TestIndexWriterDelete.testDeleteAllNoDeadLock
> <<<
> [junit4] > Throwable #1:
> com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an
> uncaught exception in thread: Thread[id=36, name=Thread-2, state=RUNNABLE,
> group=TGRP-TestIndexWriterDelete]
> [junit4] > at
> __randomizedtesting.SeedInfo.seed([952BE262BA547C1:3A4B5138AB66FD97]:0)
> [junit4] > Caused by: java.lang.RuntimeException:
> java.lang.IllegalArgumentException: field number 0 is already mapped to field
> name "null", not "content"
> [junit4] > at
> __randomizedtesting.SeedInfo.seed([952BE262BA547C1]:0)
> [junit4] > at
> org.apache.lucene.index.TestIndexWriterDelete$1.run(TestIndexWriterDelete.java:332)
> [junit4] > Caused by: java.lang.IllegalArgumentException: field number
> 0 is already mapped to field name "null", not "content"
> [junit4] > at
> org.apache.lucene.index.FieldInfos$FieldNumbers.verifyConsistent(FieldInfos.java:310)
> [junit4] > at
> org.apache.lucene.index.FieldInfos$Builder.getOrAdd(FieldInfos.java:415)
> [junit4] > at
> org.apache.lucene.index.DefaultIndexingChain.getOrAddField(DefaultIndexingChain.java:650)
> [junit4] > at
> org.apache.lucene.index.DefaultIndexingChain.processField(DefaultIndexingChain.java:428)
> [junit4] > at
> org.apache.lucene.index.DefaultIndexingChain.processDocument(DefaultIndexingChain.java:394)
> [junit4] > at
> org.apache.lucene.index.DocumentsWriterPerThread.updateDocuments(DocumentsWriterPerThread.java:297)
> [junit4] > at
> org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:450)
> [junit4] > at
> org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1291)
> [junit4] > at
> org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:1264)
> [junit4] > at
> org.apache.lucene.index.RandomIndexWriter.addDocument(RandomIndexWriter.java:159)
> [junit4] > at
> org.apache.lucene.index.TestIndexWriterDelete$1.run(TestIndexWriterDelete.java:326){noformat}
> It does *not* reproduce unfortunately ... but maybe there is some subtle
> thread safety issue in this code ... this is a hairy part of Lucene ;)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]