Creating this as follow-up on
AMQ-3457. AMQ-3457 removed cleanup on call to close() for PooledConnection objects, causing temporary destinations to remain in the broker until all uses of the actual underlying ActiveMQ connection are closed. Since those other uses of the underlying connection can be held indefinitely, or - on a very active system - there might be almost no time when there are no users of a connection, those temporary destinations essentially create a leak.
The most correct operation would remove the temporary destination for each PooledConnection when it's close() method is called.
AMQ-3457, updates for AMQ-2349 attempted to resolve this problem, but ended up being overly-aggressive, removing all of the temporary destinations from the underlying connection. So, one PooledConnection's close() deleted temporary destinations for multiple PooledConnection objects which were still active.
Test case and patch will be provided.