Skip to content

Update filesystem watch filters#11464

Open
MaggieShan wants to merge 5 commits into
masterfrom
maggs/fix-linux-inotify-bug
Open

Update filesystem watch filters#11464
MaggieShan wants to merge 5 commits into
masterfrom
maggs/fix-linux-inotify-bug

Conversation

@MaggieShan
Copy link
Copy Markdown
Contributor

@MaggieShan MaggieShan commented May 21, 2026

Description

  • Based on change to the notify crate Update WatchFilter API notify#3 (will update cargo.toml once it's merged)
    • Which introduces 2 filter fns within the watch filter - should_emit_event and should_register_directory
    • Updates all callers of WatchFilter::with_filter to include the right predicates
      • Where should_emit_event filters out specific files while should_register_directory includes ancestors to allowlisted paths such that the directories are correctly registered
  • Today we use a filesystem watcher to detect git changes (branch checkouts, commits, etc.) using an allowlist - this includes paths like HEAD, refs/heads/*, index.lock, and ignores paths like .git/logs/ to reduce noice
    • The issue is that on linux, the notify crate uses inotify which uses the filter to decide which directories to register/watch
    • This meant that with out filter should_ignore_git_path, directories like ./git and ./git/refs were not getting registered
  • Better fix to Allow ancestor directories of allowlisted git files #11321

Linked Issue

  • APP-4528
  • I believe this also fixes the flaky test mentioned in for the same reasons CODE-1492

Testing

Tested various git commands and repo updates in a linux devbox

Tested original repro steps where diffs weren't getting the events for checkout:

  1. git checkout HEAD~1
  2. update base branch to master in code review view
  3. git checkout master
  4. Bug: code review renders old/inaccurate diffs
  5. Fix: code review refresh is triggered and shows clean state
    https://www.loom.com/share/ea1a81e5c0654fc9a6d0f20b68f7d63e

Also verified that we're not properly watching changes to remote refs - so pushing commits to a remote branch is tracked:

  1. git commit and git push changes to a branch
  2. Bug: code review git button shows "push" as the primary action
  3. Fix: code review git button shows "create pr" as the primary action
  • I have manually tested my changes locally with ./script/run

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

Oz plan: https://staging.warp.dev/drive/notebook/Linux-inotify-dual-predicate-watch-filter-Warp-caller-updates-5HQUBSdF5ZqO5e8GxJmuAe

Changelog Entries for Stable

CHANGELOG-BUG-FIX: Fixes linux file watcher bug where certain git events were not getting sent

@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented May 21, 2026

@MaggieShan

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR updates filesystem watch filters to separate directory-registration predicates from event-emission predicates for repository and managed-path watchers. No approved spec context was available, so the review is based on the PR description and annotated diff.

Concerns

  • The committed Cargo [patch] override points notify dependencies at a developer-local /Users/... checkout, and the lockfile has been rewritten as if those packages are path dependencies. This will make builds fail or become non-reproducible outside that machine.

Verdict

Found: 0 critical, 1 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Comment thread Cargo.toml Outdated
@MaggieShan MaggieShan requested a review from kevinyang372 May 21, 2026 04:28
@MaggieShan
Copy link
Copy Markdown
Contributor Author

/oz-review

@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented May 21, 2026

@MaggieShan

I'm re-reviewing this pull request in response to a review request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR updates filesystem watcher filters for the notify dual-predicate API and adjusts repository/git watch tests. The watcher logic generally follows the intended separation between directory registration and event emission, and I did not find security-specific findings.

Concerns

  • The new repo_watch_filter surface pulls notify-debouncer-full into repo_metadata/src/entry.rs unconditionally, but that dependency is not available for wasm builds.

Verdict

Found: 0 critical, 1 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Comment thread crates/repo_metadata/src/entry.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant