@Override
    public void leftCluster(final byte[] nodeIdBytes) {
        nodeHasLeftCluster = true;
        final NodeID nodeID = NodeID.getInstance(nodeIdBytes);
        final String nodeName = Optional.ofNullable(nodeNames.remove(nodeID)).orElse(UNKNOWN_NODE_NAME);
        LOGGER.info("Another node ({}/{}) has left the cluster [seniorMember={}]", nodeID, nodeName, getSeniorMember());
        if (ClusterManager.isSeniorClusterMember()) {
            final int clusterSize = ClusterManager.getNodesInfo().size();
            final String conjunction;
            final String plural;
            if (clusterSize == 1) {
                conjunction = "is";
                plural = "";
            } else {
                conjunction = "are";
                plural = "s";
            }
            sendMessageToAdminsIfEnabled(nodeName + " has left the cluster - there " + conjunction + " now only " + clusterSize + " node" + plural + " in the cluster");
        }
    }
Monitors the state of the cluster, and warns admins when nodes leave or rejoin the cluster
xmppserver/src/main/java/org/jivesoftware/openfire/cluster/ClusterMonitor.java