I'm happy to announce that 5.1.7 has been released!
The major new features are FD_SOCK2  and VERIFY_SUSPECT2 .
The complete list of features and bug fixes is at .
Here's a short description of the major changes/additions:
This is a rewrite of FD_SOCK, which was created 20 (!) years ago. The old protocol has worked surprisingly well, given its brittle and complex design. FD_SOCK2 should be much more robust, as I've eliminated the cache between ports and members, and code which maintains this cache.
Also, FD_SOCK2 (re-)uses NioServer, which means that we'll use 1 (select) thread instead of 3 in FD_SOCK.
Compared to FD_SOCK's 1235 LOC, FD_SOCK2 has 723 LOC with the same functionality.
The major change over VERIFY_SUSPECT is that VERIFY_SUSPECT2 bundles SUSPECT events sent up the stack. This reduces the problem where view installation runs into a timeout waiting for acks from crashed members.
When X crashed, and then Y crashed a few milliseconds later, then VERIFY_SUSPECT would have sent up events SUSPECT(X) and then SUSPECT(Y), whereas VERIFY_SUSPECT2 sends up SUSPECT(X,Y) *if* X and Y crashed in the same time window (1s by default).
This speeds up the installation of the new view, especially when multiple members have crashed.
No need to use jmx= or op= in probe
This is only syntatic sugar, but now we can shorten probe.sh jmx=UDP.bind to probe.sh UDP.ping and probe.sh op=TCP.printConnections to probe.sh TC.printConnections. This comes in handy when switching between attributes and operations. JIRA: