VerneMQ
Fixes contributed to VerneMQ, the Erlang/OTP MQTT broker, and a benchmark and chaos suite for testing its clusters under failure.
- Merged upstream
- 6
- Open upstream
- 6
- Chaos scenarios
- 11
As of 19 October 2026. Source: github.com/ashtonian/vernemq-stress-test
Problem
A VerneMQ cluster has to stay correct while nodes fail, restart, partition and rejoin. Those failures are hard to reproduce on a laptop and easy to miss in unit tests.
Approach
- A benchmark and chaos suite provisions clusters on AWS with Terraform and Ansible, or runs the same scenarios locally in Docker, and drives load with emqtt-bench.
- Eleven scenarios: baseline throughput, node failure recovery, connection storms, node flapping, graceful shutdown, network partitions, slow nodes, rolling upgrades, cluster rebalance, netsplit recovery and subscription storms.
- Any git ref can be benchmarked, so a change is measured A/B against the release it modifies, or across several versions at once.
Merged upstream
Into the broker, vernemq/vernemq:
- make internode cluster readiness check parallel
- fix incr_socket_close() when clients are rapid connecting/disconnecting
- Update default rule for all clients
Into the container image and chart, vernemq/docker-vernemq:
- add auto port config to vernemq.sh
- add support for custom ports on the headless service
- update headless service to expose more ports
In review
Cluster auto-balancing, dynamic gossip, a fix for subscription loss under concurrent subscribes, modern TLS cipher suites, faster shared-subscription selection, and exponential backoff for inter-node connects.