Sorry for mixing up potentially unrelated bugs.
There is a race conditions concerning shutdown and statusReporter in BrokerPool. If two threads do shutdown and there is some unlucky timing then there may be an NPE on cleaning up status reporter. (happend to me, may not be reproducable)
A similar race condition may occur during initialization if this is ever done outside the constructor.
There is a chance of canReadDataDir failing in a way a lock it sets may never be released. (happend to me on error conditions, may not be reproducable)
There is a chance of the transactionManager being created but initialization failing after that so it is never shut down and so the FileSyncThread hangs.
There are additional changes in the attached patch file that make use of the possibility to add a cause to an Exception.