@Override
    public void leftCluster(byte[] nodeID) {
        // Another node left the cluster.
        //
        // If the cluster node leaves in an orderly fashion, it might have broadcasted
        // the necessary events itself. This cannot be depended on, as the cluster node
        // might have disconnected unexpectedly (as a result of a crash or network issue).
        //
        // Determine what data was available only on that node, and remove that.
        //
        // All remaining cluster nodes will be in a race to clean up the
        // same data. The implementation below accounts for that, by only having the
        // senior cluster node to perform the cleanup.
        if (ClusterManager.isSeniorClusterMember()) {
            // Remove server features added by node that is gone
            final NodeID leftNode = NodeID.getInstance(nodeID);
            CacheUtil.removeValueFromMultiValuedCache(serverFeatures, leftNode);
        }
    }
Removes a feature from the information returned whenever a disco for information is
made against the server.

@param namespace the namespace of the feature to be removed.
xmppserver/src/main/java/org/jivesoftware/openfire/disco/IQDiscoInfoHandler.java