Make sure idle jobs only run if server is really idle
Summary: Previously, they would run between every round of rechecking, even if
there were a client still waiting (which can happen because hack build hooks
into the next rechecking phase, and because multiple hh_clients may connect in
succession. For example, Vim's `:wa` triggers that behavior.)
Logging is slow, and GC'ing (which I intend to add to the idle job list) is
even slower, so fixing this seems worthwhile.
I had to make the KILL command specially handled, because we *don't* want to
delay killing off the server just because another client has connected to the
server.
Reviewed By: @dabek
Differential Revision:
D2368901