/** * Remove the connection from the connection registry and clean up any remaining shrapnel * * @param nodeId */ public void disconnectNode(short nodeId) { synchronized (connections) { Short n = Short.valueOf(nodeId); MessageWindow mw = messageWindows.get(n); if (mw != null) { mw.lock.lock(); mw.disconnected = true; try { mw.full.signalAll(); messageWindows.remove(n); } finally { mw.lock.unlock(); } } NodeConnection nc = connections.get(nodeId); if (nc != null) { nc.nuke(); } connections.remove(nodeId); } clusterManager.connectionStateChange(); }