ソケット インターフェイスを介して監視を確立し、変更をサブスクライブしています。
着信 PDU ごとに、マップに「警告」キーがある場合、ドキュメントが示唆するように、コンソール/ユーザーに警告を出力します。
ただし、オーバーフローが発生した場合、「警告」キーを一度だけ取得するのではなく、すべての着信 PDU に同じ警告 (「再クロールが 1 回発生しました」) が何度も (AFAICT?) あるように見えるので、同じエラーメッセージでコンソールをスパムすることになります。
私にとっては、Watchman が "警告" キーをオーバーフロー イベントごとに 1 回だけ送信した方が望ましいでしょう。それ以外の場合は、コンソールのスパムを回避するために、「ユーザーに既に表示されている警告」をキャッシュする必要があると考えています。
また、一般的なオーバーフロー動作に関して、警告には次のように記載されています。
To resolve, please review the information on
https://facebook.github.io/watchman/docs/troubleshooting.html#recrawl
To clear this warning, run:
`watchman watch-del ... ; watchman watch-project ...`
しかし、サブスクリプションをキャンセルして再登録することなく、警告をリセットする方法があればいいのにと思います。たとえば、現在、control-c でプログラムを強制終了し、watchman watch-del
コマンドを実行してから、プログラムを再起動する必要があります。
これは内部で自動化できます。たとえば、プログラムに「オーバーフローが発生しました」という警告メッセージを検出させ、サブスクリプションを強制終了し、 を発行してwatch-del
から を再発行しwatch
ます。
しかし、ソケットインターフェースを介して警告をリセットしたり、これを内部的に実行したりできたとしても、watch-del
なぜ警告をリセットする必要があるのか 疑問に思っています. (コンソールにログを記録することにより)、今は問題ありませんか?そもそもなぜwatch-del
+ re-が必要なのですか?watch
たとえば、オーバーフローが常に発生していない限り、ウォッチマンが再クロールを行っているように見えます (したがって、ファイル システムとの同期が回復します) + 警告 PDU を 1 つ発行することは、すべてが正常に戻ったことを意味し、ユーザー プログラムは、理想的にはそのままでいることができます。ダム/シンプルで、同じ/既存のサブスクリプションでオーバーフロー後/再クロール後の PDU を取得し続けるだけです。