/** * Closes the service. */ public CompletableFuture<Void> close() { CompletableFuture<Void> future = new CompletableFuture<>(); threadContext.execute(() -> { try { clusterMembershipService.removeListener(membershipEventListener); primaryElection.removeListener(primaryElectionListener); role.close(); } finally { future.complete(null); } }); return future.thenRunAsync(() -> threadContext.close()); } }
@Override public CompletableFuture<Void> stop() { unregisterListeners(); primaryElection.removeListener(primaryElectionListener); if (compactTimer != null) { compactTimer.cancel(); } journal.close(); started.set(false); return memberGroupService.stop().exceptionally(throwable -> { log.error("Failed stopping member group service", throwable); return null; }).thenRunAsync(() -> { if (closeOnStop) { threadContextFactory.close(); } }); } }
@Override public CompletableFuture<Void> close() { CompletableFuture<Void> future = new CompletableFuture<>(); PrimaryTerm term = this.term; if (term.primary() != null) { protocol.close(term.primary().memberId(), new CloseRequest(descriptor, sessionId.id())) .whenCompleteAsync((response, error) -> { try { protocol.unregisterEventListener(sessionId); clusterMembershipService.removeListener(membershipEventListener); primaryElection.removeListener(primaryElectionListener); } finally { future.complete(null); } }, threadContext); } else { future.complete(null); } return future; }
@Override public CompletableFuture<Void> stop() { unregisterListeners(); primaryElection.removeListener(primaryElectionListener); if (compactTimer != null) { compactTimer.cancel(); } journal.close(); started.set(false); return memberGroupService.stop().exceptionally(throwable -> { log.error("Failed stopping member group service", throwable); return null; }).thenRunAsync(() -> { if (closeOnStop) { threadContextFactory.close(); } }); } }