Requesting the symlink_target field causes Watchman to fail to respond to queries, or send unilateral subscription notifications, where the response would include a deleted symlink. A subscription enters a zombie state and never sends any further notifications. A query hangs the client.
This can be reproduced by deleting a symlink and performing a "since" query with a pre-deletion clock.
(Reporting this on GitHub to provide an OSS reference point for Metro etc)
Environment
Version: 20221208
Working:
✅ Eden on macOS (reports symlink_target: null after deletion)
Not working:
❌ kqueue+fsevents on macOS
❌ fsevents on macOS
❌ inotify on Linux
❌ win32 on Windows (Watchman 20220918.223204.0 from Choco)
watchman-diag (macOS): P587187472
Reproduction script
(requires jq to parse a clock out of the initial query)
Issue
Requesting the
symlink_target
field causes Watchman to fail to respond to queries, or send unilateral subscription notifications, where the response would include a deleted symlink. A subscription enters a zombie state and never sends any further notifications. A query hangs the client.This can be reproduced by deleting a symlink and performing a "since" query with a pre-deletion clock.
(Reporting this on GitHub to provide an OSS reference point for Metro etc)
Environment
Version: 20221208
Working: ✅ Eden on macOS (reports
symlink_target: null
after deletion)Not working: ❌
kqueue+fsevents
on macOS ❌fsevents
on macOS ❌inotify
on Linux ❌win32
on Windows (Watchman 20220918.223204.0 from Choco)watchman-diag
(macOS): P587187472Reproduction script
(requires
jq
to parse a clock out of the initial query)Output
SYMLINKS=1 ./watchman-query-test.sh
(broken)Process hangs
SYMLINKS=0 ./watchman-query-test.sh
(working)Log output
This output is generated during the initial query. There is no log output generated during the "since" query.