The stop method in the NodeManager gets called twice when the NodeManager is shut down via the shutdown hook.
The first is the stop that gets called directly by the shutdown hook. The second occurs when the NodeStatusUpdaterImpl is stopped. The NodeManager responds to the NodeStatusUpdaterImpl stop stateChanged event by stopping itself. This is so that NodeStatusUpdaterImpl can notify the NodeManager to stop, by stopping itself in response to a request from the ResourceManager
This could be avoided if the NodeStatusUpdaterImpl were to stop the NodeManager by calling its stop method directly.