Version 1.8.2 and 1.8.3 contain improvements for large deployments:
- Fix crash caused by null dereference under certain stall conditions. The stall conditions themselves are also fixed. See next points.
- Fixed periodic stall because of a maintenance on a very large subscription tree. When there are many clients placing subscriptions, the tree that tracks them gets very big. This needs to be pruned on occasion, which turned out to take too long on hundreds of thousands of nodes in the tree. It now dedicates at most 10% of one thread until the task is done.
- Expiring retained messages was already limited in time to prevent stalls, but having many of them resulted in them never being expired. It now dedicates at most 10% of one thread until the whole tree is checked. This should now easily handle tens of millions retained messages, or more.
- Websocket pong frames are now decoded, and ignored. Some implementations send unsolicited pongs, which are now gracefully handled.