protected Object doSynchronousClusterTask(ClusterTask<Object> task) {
        ClusterNodeInfo info = CacheFactory.getClusterNodeInfo(nodeID);
        Object result = null;
        if (info == null && task instanceof RemoteSessionTask) { // clean up invalid session
            Session remoteSession = ((RemoteSessionTask)task).getSession();
            if (remoteSession instanceof ClientSession) {
                SessionManager.getInstance().removeSession(null, remoteSession.getAddress(), false, false);
            }
        } else {
            result = (info == null) ? null : CacheFactory.doSynchronousClusterTask(task, nodeID);
        }
        return result;
    }
Invokes a task on the remote cluster member synchronously and returns the result of
the remote operation.

@param task        the ClusterTask object to be invoked on a given cluster member.
@return result of remote operation.
xmppserver/src/main/java/org/jivesoftware/openfire/session/RemoteSession.java