Skip to content

Commit f5bb9a3

Browse files
committed
Fix issue in IndexingRescanner that DELETED events were sometimes generated for files that exist
1 parent fd68764 commit f5bb9a3

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/main/java/engineering/swat/watch/impl/overflows/IndexingRescanner.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,10 @@ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOEx
141141
var visitedInDir = visited.pop();
142142
if (visitedInDir != null) {
143143
for (var p : index.keySet()) {
144-
if (dir.equals(p.getParent()) && !visitedInDir.contains(p)) {
144+
if (dir.equals(p.getParent()) && !visitedInDir.contains(p) && !Files.exists(p)) {
145+
// Note: The third subcondition is needed because the
146+
// index may have been updated during the visit. In that
147+
// case, `p` might not be in `visitedInDir`, but exist.
145148
events.add(new WatchEvent(WatchEvent.Kind.DELETED, p));
146149
}
147150
}

0 commit comments

Comments
 (0)