我正在通过套接字接口建立一个手表,然后订阅更改。
对于每个传入的 PDU,如果地图有一个“警告”键,我会向控制台/用户输出警告,正如文档所建议的那样。
但是,当发生溢出时,看起来我并没有得到一次“警告”键,而是每个传入的 PDU 一遍又一遍地有相同的警告(“重新抓取发生 1 次”)(AFAICT?),所以我最终使用相同的错误消息向控制台发送垃圾邮件。
对我来说,如果 Watchman 每次溢出事件只发送一次“警告”键会更好。否则,我正在考虑必须缓存“已向用户显示的警告”以避免向控制台发送垃圾邮件。
此外,就一般溢出行为而言,警告说:
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 ...`
但我希望有一种方法可以重置警告,而不必取消并重新订阅我的订阅。例如,现在我必须控制-c 杀死我的程序,运行watchman watch-del
命令,然后重新启动我的程序。
我可以在内部实现自动化,例如让我的程序检测到“发生溢出”警告消息,终止它的订阅,watch-del
发出watch
.
但是,即使我可以通过套接字接口重置警告,或者这样做 internal watch-del
,我想知道为什么警告需要重置 - 例如理论上如果守望者已经进行了重新抓取,我告诉用户它发生了(通过将其记录到控制台),现在不应该好吗?为什么首先需要watch-del
+重新watch
?
例如,只要不经常发生溢出,就好像守望者在进行重新抓取(因此与文件系统重新同步)+发出一个警告 PDU 应该意味着一切都恢复正常,理想情况下,我的用户程序可以保留愚蠢/简单,只是继续在它的相同/现有订阅上获取溢出后/重新抓取后 PDU。