public static void shutdown() { logger_.info("Shutting down ..."); synchronized (MessagingService.class) { /* Stop listening on any socket */ for (SelectionKey skey : listenSockets_.values()) { SelectorManager.getSelectorManager().cancel(skey); } listenSockets_.clear(); /* Shutdown the threads in the EventQueue's */ messageDeserializationExecutor_.shutdownNow(); messageSerializerExecutor_.shutdownNow(); messageDeserializerExecutor_.shutdownNow(); streamExecutor_.shutdownNow(); /* shut down the cachetables */ taskCompletionMap_.shutdown(); callbackMap_.shutdown(); /* Interrupt the selector manager thread */ SelectorManager.getSelectorManager().interrupt(); poolTable_.clear(); verbHandlers_.clear(); bShutdown_ = true; } logger_.debug("Shutdown invocation complete."); }
/** Cleans up resources to avoid excessive memory usage. */ public void cleanUp() { topSnapshot.set(null); singleMsgs.clear(); fullMsgs.clear(); rcvdIds.clear(); oldestNode.set(null); partReleaseFut = null; Collection<ClusterNode> rmtNodes = this.rmtNodes; if (rmtNodes != null) rmtNodes.clear(); }
@Stop(priority = 20) @Override public void stop() { if (trace) { log.tracef( "Shutting down StateConsumer of cache %s on node %s", cacheName, rpcManager.getAddress()); } try { synchronized (this) { // cancel all inbound transfers taskQueue.clear(); for (Iterator<List<InboundTransferTask>> it = transfersBySource.values().iterator(); it.hasNext(); ) { List<InboundTransferTask> inboundTransfers = it.next(); it.remove(); for (InboundTransferTask inboundTransfer : inboundTransfers) { inboundTransfer.cancel(); } } transfersBySource.clear(); transfersBySegment.clear(); } } catch (Throwable t) { log.errorf( t, "Failed to stop StateConsumer of cache %s on node %s", cacheName, rpcManager.getAddress()); } }
void failedNode(InetAddress remote) { String errorMsg = String.format("Problem during repair session %s, endpoint %s died", sessionName, remote); logger.error(errorMsg); exception = new IOException(errorMsg); // If a node failed, we stop everything (though there could still be some activity in the // background) jobs.clear(); activeJobs.clear(); differencingDone.signalAll(); completed.signalAll(); }
/** * Submit differencers for running. All tree *must* have been received before this is called. */ public void submitDifferencers() { assert requestedEndpoints.size() == 0; // Right now, we only difference local host against each other. CASSANDRA-2610 will fix // that. // In the meantime ugly special casing will work good enough. MerkleTree localTree = trees.get(FBUtilities.getLocalAddress()); assert localTree != null; for (Map.Entry<InetAddress, MerkleTree> entry : trees.entrySet()) { if (entry.getKey().equals(FBUtilities.getLocalAddress())) continue; Differencer differencer = new Differencer(cfname, entry.getKey(), entry.getValue(), localTree); syncJobs.add(entry.getKey()); logger.debug("Queueing comparison " + differencer); StageManager.getStage(Stage.ANTI_ENTROPY).execute(differencer); } trees.clear(); // allows gc to do its thing }
public void terminate() { terminated = true; for (RepairJob job : jobs) job.terminate(); jobs.clear(); activeJobs.clear(); }
public void cleanup() { _running = false; heartBeatExecutorService.shutdownNow(); _process.destroy(/*force=*/ true); _inputs.clear(); }