Clean up a few more daemon behaviors
Summary:
Ref T12298.
- If all daemons in all pools are hibernating already, we may exit immediately without sending EXIT events and fail to update the web UI.
- A max() should be min() ("sleep for at most 180 seconds", not "sleep for at least 180 seconds").
- If there are no daemons in a pool (unlikely/theoretical), we might not set the shutdown flag on the pool correctly.
- An autoscale message may actually mean that a pool is exiting.
Test Plan:
- Ran bin/phd debug task, waited for daemon to hibernate, killed it, saw it vanish from daemon console.
- Saw it hibernate for 60s, not 180s.
- Uh, killed a pool real fast and nothing broke? This one is hard/impossible to test.
- Read the newer autoscale message.
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T12298
Differential Revision: https://secure.phabricator.com/D17560