/** * Invoke the listener for the last time so that the listener could clean up resources */ @Deprecated public void reset() { reset(true); }
void resetHandlers(boolean isShutdown) { synchronized (this) { if (_handlers != null) { // get a copy of the list and iterate over the copy list // in case handler.reset() modify the original handler list List<CallbackHandler> tmpHandlers = new ArrayList<>(); tmpHandlers.addAll(_handlers); for (CallbackHandler handler : tmpHandlers) { handler.reset(isShutdown); LOG.info("reset handler: " + handler.getPath() + ", " + handler.getListener()); } } } }
void resetHandlers() { synchronized (this) { if (_handlers != null) { // get a copy of the list and iterate over the copy list // in case handler.reset() modify the original handler list List<CallbackHandler> tmpHandlers = new ArrayList<>(); tmpHandlers.addAll(_handlers); for (CallbackHandler handler : tmpHandlers) { handler.reset(); LOG.info("reset handler: " + handler.getPath() + ", " + handler.getListener()); } } } }
@Override public boolean removeListener(PropertyKey key, Object listener) { LOG.info("Removing listener: " + listener + " on path: " + key.getPath() + " from cluster: " + _clusterName + " by instance: " + _instanceName); synchronized (this) { List<CallbackHandler> toRemove = new ArrayList<>(); for (CallbackHandler handler : _handlers) { // compare property-key path and listener reference if (handler.getPath().equals(key.getPath()) && handler.getListener().equals(listener)) { toRemove.add(handler); } } _handlers.removeAll(toRemove); // handler.reset() may modify the handlers list, so do it outside the iteration for (CallbackHandler handler : toRemove) { handler.reset(true); } } return true; }
@Override public boolean removeListener(PropertyKey key, Object listener) { LOG.info("Removing listener: " + listener + " on path: " + key.getPath() + " from cluster: " + _clusterName + " by instance: " + _instanceName); synchronized (this) { List<CallbackHandler> toRemove = new ArrayList<>(); for (CallbackHandler handler : _handlers) { // compare property-key path and listener reference if (handler.getPath().equals(key.getPath()) && handler.getListener().equals(listener)) { toRemove.add(handler); } } _handlers.removeAll(toRemove); // handler.reset() may modify the handlers list, so do it outside the iteration for (CallbackHandler handler : toRemove) { handler.reset(); } } return true; }
_leaderElectionHandler.reset();
_leaderElectionHandler.reset(true);
_leaderElectionHandler.reset(false);
_leaderElectionHandler.reset();