diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java index 2805c59ff12..aabba4d6b33 100644 --- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java +++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java @@ -3425,16 +3425,13 @@ public class IndexWriter if (useCompoundFile) { Collection filesToDelete = merge.getMergeInfo().files(); TrackingDirectoryWrapper trackingCFSDir = new TrackingDirectoryWrapper(mergeDirectory); - // TODO: unlike merge, on exception we arent sniping any trash cfs files here? // createCompoundFile tries to cleanup, but it might not always be able to... - try { - createCompoundFile( - infoStream, trackingCFSDir, merge.getMergeInfo().info, context, this::deleteNewFiles); - } finally { - // delete new non cfs files directly: they were never - // registered with IFD - deleteNewFiles(filesToDelete); - } + createCompoundFile( + infoStream, trackingCFSDir, merge.getMergeInfo().info, context, this::deleteNewFiles); + + // creating cfs resets the files tracked in SegmentInfo. if it succeeds, we + // delete the non cfs files directly as they are not tracked anymore. + deleteNewFiles(filesToDelete); merge.getMergeInfo().info.setUseCompoundFile(true); }