pub enum InvalidateReason {
WatchOverflow,
UnpairedRename,
WatchSetupRace,
PeriodicSweep,
VerificationFailed,
UnknownAncestry,
WatchContention,
Requested,
}Expand description
Why a producer had to escalate to Op::InvalidateSubtree instead of describing a
change precisely.
Each variant corresponds to a real, documented platform limitation rather than a defensive catch-all, and the scan layer resolves every one of them the same way.
Variants§
WatchOverflow
The kernel dropped events: inotify Q_OVERFLOW, FSEvents MustScanSubDirs, or a
Windows ReadDirectoryChangesW buffer overrun. All three surface through notify
as Flag::Rescan, and swallowing that flag silently corrupts any index built on
events.
UnpairedRename
A rename whose two sides could not be paired: FSEvents reports one path with no
mechanism to associate old and new, and file-id stitching did not resolve it.
WatchSetupRace
A directory was created and its watch registered a moment later; anything created inside that window produced no event at all.
PeriodicSweep
A periodic reconciliation sweep, for backends that cannot signal drops at all (kqueue).
VerificationFailed
Stat verification failed without proving the path is gone. The known entry must remain until reconciliation can retry and report the underlying I/O error.
UnknownAncestry
A verified child arrived below ancestry the index has not verified. The child is withheld while reconciliation starts from the nearest known directory.
WatchContention
Repeated concurrent commits prevented a watch sample from reaching a stable arbitration boundary. The root is reconciled instead of doing filesystem I/O under the index lock or allowing an old sample to win.
Requested
Requested by the caller.