Chapter 14. Changes in 3.2.12

14.1. Errata

RHBA-2019:0390– Red Hat Enterprise MRG Messaging 3.2.12 Release

BZ#1590760 - qpidd segfault with huge backtrace when deleting autoDel queue just being auto-deleted
An autodelete queue is deleted when the last consumer detaches from it. If, concurrently, the queue is attempted to be deleted by using another mechanism (management/QMF), there is a time span when one thread deletes the queue and other threads are not yet aware that the queue no longer exists. As a result, the qpidd process can encounter a segmentation fault.
To correct this issue, the locking scheme was enhanced thereby avoiding the race condition that caused the problem.
BZ#1663609 - CLOSE_WAIT leak in qpid-cpp-client when trying to reconnect over unreliable network
When a C++ client attempts to reconnect over an unreliable network that drops a lot of packets, the client library sometimes fails to close the TCP connection on its end. The connection can get stuck in CLOSE_WAIT status and the associated resources are held indefinitely. A series of these leaks can cause resources issues, such as FDs running out and preventing new client connections to the broker.
In scenarios where the connection is aborted due to issues like a faulty network, the socket is now explicitly closed to avoid the leak. Clients can reconnect without leaking any associated resources.
BZ#1344142 - [MRG issue impacting Red Hat Satellite 6] dynflow_executor FD leak and segfault after stopping qpidd
A prototype socket was created for every client ssl socket, even though that prototype socket was actually used only for server sockets. The prototype socket was not closed when the SslSocket instance was closed, which caused a file descriptor to be leaked.
Now, a prototype socket is not created unless it is a server socket, for which the prototype will be used and cleaned up properly and to avoid leaking a file descriptor.