2016-10-18 6 views
0

소켓 인터페이스를 통해 감시를 설정 한 다음 변경 사항을 구독합니다.소켓 인터페이스를 사용하면 오버플로 경고가 계속 전송됩니다.

들어오는 각 PDU에 대해지도에 "경고"키가 있으면 설명서에 나와있는대로 콘솔/사용자에게 경고를 출력합니다.

그러나 오버플로가 발생하면 "경고"키가 한 번만 표시되는 것처럼 보입니다. 대신 들어오는 모든 PDU에는 동일한 경고 ("recrawl happened 1 times")가 계속 반복됩니다 (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 ...` 

하지만 취소하고 가입을 다시 구독하지 않고 경고를 재설정하는 방법을 선호하는 것 :

또한, 일반적으로 오버 플로우 행동의 측면에서, 경고는 말한다. 예 : 지금 당장 나는 내 프로그램을 죽이고, watchman watch-del 명령을 실행 한 다음 내 프로그램을 다시 시작해야한다.

내부적으로 자동화 할 수 있습니다 (예 : 내 프로그램에서 "넘쳐 났음"경고 메시지를 감지하고 구독을 종료하고 watch-del을 발급 한 다음 watch을 다시 발행하십시오.

하지만 소켓 인터페이스를 통해 경고를 재설정하거나이 내부 번호를 watch-del으로해도 경고가 다시 설정되어야하는 이유가 궁금합니다. 파수꾼이 이미 재 크롤링을 한 경우 이론적으로 콘솔에 로그인하여 사용자에게 말했는데 현재 문제가 없어야합니다. 처음에 watch-del + watch이 필요한 이유는 무엇입니까?

예. 오버플로가 끊임없이 발생하지 않는 한 재검토를하는 파수꾼처럼 보입니다 (파일 시스템과 동기화되어 다시 돌아옵니다). 하나의 경고 PDU를 보내면 모든 것이 정상으로 돌아가고, 사용자 프로그램이 이상적으로 바보가 될 수 있습니다./간단하고 기존/동일 구독에서 포스트 오버플로/포스트 재 크롤링 PDU를 계속 가져옵니다.

답변

0

죄송 합니다만 이것은 분명하지 않을 수 있습니다.

첫째, 파수꾼 서비스가 이미 오버플로에서 복구되었으므로 엄격하게 조치를 취하지 않아도됩니다.

로컬 구성 문제가있을 수 있음을 알려드립니다. Linux를 사용하는 경우 다양한 inotify sysctl 매개 변수를 늘리는 것이 좋습니다. 당신이 맥에 있다면 당신은 이것에 대해 할 수있는 일이 거의 없습니다. 경고는 끈적 거리기 때문에 사용자의 얼굴을 강요합니다. 나중에 사용자가 시계를 숨길 수있는 방법을 요청하도록 했으므로 시계를 삭제하고 다시 시작하라는 제안이 추가되었습니다.

그 결과는 혼란을 야기하는 매우 시끄러운 경고였습니다.

watchman 4.7에서 경고를 해제하는 구성 옵션을 추가했습니다. https://facebook.github.io/watchman/docs/config.html#suppress_recrawl_warnings 여기에는 시스템 구성을 수정하는 방법을 알지 못하는 (또는 권한이 없음) 사용자에게 경고를 표시하지 않기위한 것입니다. 사이트 별보고 시스템에 재 크롤링 볼륨을 기록하고보고 할 수있는 (문서화되지 않은) perf 샘플링 구성 옵션과 함께 잘 작동합니다.

+0

의미가 있습니다. 감사합니다.FWIW, 나는 끈적 경고를 전적으로 재설정하라는 명령을받는 것이 좋을 것이라고 생각합니다. 그럼 난 그것을 (사용자에게 그것을 반향 후) 소켓 인터페이스를 통해'watch-del'을 사용하지 않고 재설정 할 수있다. 나는 현재 구독을 무효로 할 것이라고 생각한다. (config를 검사하는 것도 의미가 있으며 사용자 프로그램이 시동시이를 수행하고 사용자가 명시 적으로 검사를 생략하는 경우를 제외하고는 한계가 너무 낮거나/기본값 인 경우 종료합니다.) –