The master has two code paths for handling agent reregistration messages, one culminating in Master::__reregisterSlave and the other in Master::_reregisterSlave. The two paths are not continuations of each other. Looks like we missed the double-underscore case in the initial implementation. This is the path that unreachable agents take, when/if they come back to the cluster. The result is that when unreachable agents are marked for draining, they do not get sent the appropriate message unless they are forced to reregister again (i.e. restarted manually).