Open
Description
It looks to me like calling shutdown() in the error paths doesn't actually result in the LifecycleComponent in Main.doMain shutting down. Normally, the DeathWatcher will raise an exception which'll be caught by the exception handler set in startComponent, but BookieServer.start() doesn't do that if the Bookie isn't running after start(). I think we just need to raise an exception in that branch in BookieServer.start().