komarov/switchman — pull request #2 by d-ai (2014-11-25 10:59:51+00:00)
Title: Fix wait in queue error checking

Олег, привет.

Мы начали использовать switchman еще в нескольких местах и у нас проявилась следующая проблема - очень часто он стал падать "не по делу", вот с такими ошибками:
```
2014-11-24 21:05:05	[4918]	Could not check LOCKNAME-0000042690 existence: -101
2014-11-24 21:05:05	[4918]	Could not check LOCKNAME-0000042690 existence: -101 at /usr/share/perl5/App/Switchman.pm line 608
App::Switchman::wait_in_queue('App::Switchman=HASH(0x1827ca0)', 'FQDN_mem') called at /usr/share/perl5/App/Switchman.pm line 451
App::Switchman::run('App::Switchman=HASH(0x1827ca0)') called at /usr/bin/switchman line 13
```
Гипотеза такая: switchman встает в очередь ожидания аренды ресурса, получает список дочерних нод (содержимое очереди), обрабатывает список и проверяет головную ноду. За время между просмотром очереди и проверкой - "головная" нода иногда успевает удалится. В результате срабатывает проверка на ошибки и скрипт выходит (пример логов - выше). С учетом того, что сразу за проверкой ошибок отдельно проверяется существование проверяемой ноды - такое поведение выглядит багом.
Проявляется это при некоторой заметной нагрузке на zookeeper (сотня одновременно стартующих скриптов).