Description
(1) ZooKeeper callback in progress, calls ZooKeeperProcess::event.
(2) ZooKeeperProcess::event calls ProcessWatcher::process.
(3) ProcessWatcher::process calls zk->getSessionId().
(4) This dispatches onto ZooKeeperProcess and blocks.
If in between (1) and (4) there is a termination of the ZooKeeperProcess then (4) will block forever because the dispatch event will be dropped. This means that the zookeeper thread is blocked and zookeeper_close could block forever!
This was introduced when the session id was added to all the dispatches inside WatcherProcess.
Attachments
Issue Links
- is related to
-
MESOS-1435 RegistrarZooKeeperTest.TaskRunning is flaky, sometimes runs forever.
- Resolved