website/docs/cmd/flush-subscriptions.md
Since 4.8.
Flushes buffered updates to subscriptions associated with the current session,
guaranteeing that they are up-to-date as of the time Watchman received the
flush-subscriptions command.
Subscription updates will be interleaved between the flush-subscriptions
request and its response. Once the response has been received, subscriptions are
up-to-date.
This command is designed to be used by interactive programs that have a
background process or daemon maintaining a subscription to Watchman. The typical
pattern is for interactive commands to be forwarded to the process, which calls
flush-subscriptions and then processes any subscription updates it received.
This pattern eliminates races with files changed right before the interactive
command.
sync_timeout: Required. The number of milliseconds to wait to observe a
synchronization cookie. The synchronization cookie is created at the start of
the flush-subscriptions call, and once the cookie is observed, means that
the OS has sent watchman all the updates till at least the start of the
flush-subscriptions call.subscriptions: Optional. Which subscriptions to flush. By default this
flushes all subscriptions associated with this project on this session.Assuming subscriptions sub1, sub2 and sub3 have been established on this
session, if sub1 has updates pending, sub2 is up-to-date and sub3 is
currently dropping updates:
["flush-subscriptions", "/path/to/root", {"sync_timeout": 1000}]
In response, Watchman will first emit a unilateral subscription PDU for sub1,
then respond with
{
"clock": "c:1446410081:18462:7:135",
"synced": ["sub1"],
"no_sync_needed": ["sub2"],
"dropped": ["sub3"]
}
To flush updates for some but not all subscriptions associated with this session:
["flush-subscriptions", "/path/to/root",
{
"sync_timeout": 1000,
"subscriptions": ["sub1", "sub2"]
}
]
Subscriptions will typically buffer individual updates until a settle period
has expired. flush-subscriptions will force those updates through immediately.
Subscriptions currently deferring updates because of defer or defer_vcs are
updated immediately, without waiting for the defer or defer_vcs to end.
Subscriptions currently dropping updates with a drop state will not get any
updates. Their names will be returned in the dropped field.
flush-subscriptions can only be used to flush subscriptions associated with
the current session.flush-subscriptions can only flush updates for one
project at a time.