public boolean removeServerRoute(DomainPair route, NodeID nodeID) {
        boolean removed;
        Lock lock = serversCache.getLock(route);
        lock.lock();
        try {
            final NodeID host = serversCache.get(route);
            if (host != null && !host.equals(nodeID)) { // When recovering from a cluster breakup, the cache can be empty. Allow this method to continue while reconstructing the cache (when host == null).
                Log.warn("Did not remove server route '{}' as the route was unexpectedly hosted on a different cluster node ('{}') than what was expected ('{}').", route, host, nodeID);
                return false;
            }
            removed = serversCache.remove(route) != null;
            localServerRoutingTable.removeRoute(route);
        }
        finally {
            lock.unlock();
        }
        return removed;
    }
Alternative to {@link #removeServerRoute(DomainPair)} that can be used to remove a route hosted on another
cluster node.

This method should only be used when recovering from cluster composition change.
xmppserver/src/main/java/org/jivesoftware/openfire/spi/RoutingTableImpl.java