0

ソケット インターフェイスを介して監視を確立し、変更をサブスクライブしています。

着信 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 を取得し続けるだけです。

4

1 に答える 1