mikemccand commented on a change in pull request #1274: LUCENE-9164: Prevent IW from closing gracefully if threads are still modifying URL: https://github.com/apache/lucene-solr/pull/1274#discussion_r387128166
########## File path: lucene/core/src/java/org/apache/lucene/index/IndexWriter.java ########## @@ -1554,20 +1554,24 @@ public long deleteDocuments(Query... queries) throws IOException { } } - try { - long seqNo = docWriter.deleteQueries(queries); - if (seqNo < 0) { - seqNo = -seqNo; - processEvents(true); - } - - return seqNo; + try (Closeable finalizer = acquireModificationLease()) { + return maybeProcessEvents(docWriter.deleteQueries(queries)); } catch (VirtualMachineError tragedy) { tragicEvent(tragedy, "deleteDocuments(Query..)"); throw tragedy; } } + private Closeable acquireModificationLease() { + assert Thread.holdsLock(this) == false : "Can't acquire modification lock while holding the IW lock"; Review comment: Can/should we also assert the reverse? I.e. whenever we `sync` on `this`, `assert` that the `modificationLease` is not held? They are mutually exclusive? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org