Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Currently the beforeClose method on AmqpPortImpl looks like the following
@Override protected ListenableFuture<Void> beforeClose() { _closing.set(true); if (_connectionCount.get() == 0) { _noConnectionsRemain.set(null); } return _noConnectionsRemain; }
This means that the close will not even be attempted until all connections associated with the port are closed. However nothing is done from within the port code to actually close these connections. Only if the virtual host(s) with which these connections are associated are closed will the port closure complete. Further if some connections are to non-VirtualHost address spaces (such as the $management space) then the connections are never closed and the port closure never terminates.
We need to review why the port is behaving in this way and look for an alternative which allows proper port shutdown / allows broker shutdown in the case where some connections are associated with synthetic vhosts.