akka/akka — pull request #15112 by csomogyi (2014-05-02 13:39:20+00:00)
Title: fixes #13923

1. register termination hook of stop scheduling before the initialization of actor ref provider
2. shutdown netty transport if listen/bind fails

These two fixes addresses the issue of hanged termination of actor system startup when underlying remote actor ref provider fails to initialize.

I think the first issue is obvious it is only an ordering issue.

The second fix, personally I don't see (it) as a good pattern, however, the current NettyTransport implementation has also design issues, but we can safely assume that if a listen() fails then that NettyTransport will not be used otherwise. So we can shut down during listen/bind failure.
One NettyTransport is designed to handle one listen address so the proper solution would be a NettyTransport redesign as we don't need pooled channel factory (and pooled threads) for each listener. But that would be a much bigger work.