From 4a5900728db6a84b4aea42545567a393989f25cf Mon Sep 17 00:00:00 2001 From: Erick Erickson Date: Tue, 5 Dec 2017 09:05:22 -0800 Subject: [PATCH] LUCENE-8048: Filesystems do not guarantee order of directories updates --- lucene/CHANGES.txt | 3 ++ .../org/apache/lucene/index/SegmentInfos.java | 1 + .../index/TestIndexWriterExceptions.java | 28 +++++++++++++------ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 1ef55cdde5a..f79ad146a90 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -144,6 +144,9 @@ Optimizations * LUCENE-8058: Large instances of TermInSetQuery are no longer eligible for caching as they could break memory accounting of the query cache. (Adrien Grand) + +* LUCENE-8048: Filesystems do not guarantee order of directories updates + (Nikolay Martynov, Simon Willnauer, Erick Erickson) Tests diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java b/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java index 008b6e379a7..ec88fef6bc2 100644 --- a/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java +++ b/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java @@ -747,6 +747,7 @@ public final class SegmentInfos implements Cloneable, Iterable { w.close(); }); - - assertTrue("failOnCommit=" + failure.failOnCommit + " failOnDeleteFile=" + failure.failOnDeleteFile, failure.failOnCommit && failure.failOnDeleteFile); + assertTrue("failOnCommit=" + failure.failOnCommit + " failOnDeleteFile=" + failure.failOnDeleteFile + + " failOnSyncMetadata=" + failure.failOnSyncMetadata + "", failure.failOnCommit && (failure.failOnDeleteFile || failure.failOnSyncMetadata)); w.rollback(); String files[] = dir.listAll(); assertTrue(files.length == fileCount || (files.length == fileCount+1 && Arrays.asList(files).contains(IndexWriter.WRITE_LOCK_NAME)));