Refine search
@Override public void operationComplete(Future<R> future) throws Exception { if (scheduledFuture != null) { scheduledFuture.cancel(); } synchronized (listener) { connectionManager.getShutdownPromise().removeListener(listener); } // handling cancel operation for blocking commands if (future.isCancelled() && !details.getAttemptPromise().isDone()) { log.debug("Canceled blocking operation {} used {}", details.getCommand(), connection); connection.forceFastReconnectAsync().addListener(new FutureListener<Void>() { @Override public void operationComplete(Future<Void> future) throws Exception { details.getAttemptPromise().cancel(true); } }); return; } if (future.cause() instanceof RedissonShutdownException) { details.getAttemptPromise().tryFailure(future.cause()); } } });
private void stop() { writeLock.lock(); try { if (timeout != null && !timeout.isCancelled()) { timeout.cancel(); } this.clear(); } finally { writeLock.unlock(); } }
private void replaceScheduledFuture(final SchedulerKey key, final Timeout newTimeout) { final Timeout oldTimeout; if (newTimeout.isExpired()) { // no need to put already expired timeout to scheduledFutures map. // simply remove old timeout oldTimeout = scheduledFutures.remove(key); } else { oldTimeout = scheduledFutures.put(key, newTimeout); } // if there was old timeout, cancel it if (oldTimeout != null) { oldTimeout.cancel(); } } }
public void cancel() { if (cancelled.compareAndSet(false, true)) { if (requestTimeout != null) { requestTimeout.cancel(); RequestTimeoutTimerTask.class.cast(requestTimeout.task()).clean(); } if (readTimeout != null) { readTimeout.cancel(); ReadTimeoutTimerTask.class.cast(readTimeout.task()).clean(); } } }
public void refreshHeartbeat(T key, TimerTask task, long timeout, TimeUnit unit) { Timeout context = timer.newTimeout(task, timeout, unit); final Timeout old = timeouts.put(key, context); if (old != null && !old.isCancelled() && !old.isExpired()) { old.cancel(); } }
protected <R, V> void checkAttemptFuture(final NodeSource source, final AsyncDetails<V, R> details, Future<R> future, final boolean ignoreRedirect) { details.getTimeout().cancel(); if (future.isCancelled()) { return; details.removeMainPromiseListener(); if (future.cause() instanceof RedisMovedException && !ignoreRedirect) { RedisMovedException ex = (RedisMovedException) future.cause(); if (source.getRedirect() == Redirect.MOVED) { details.getMainPromise().tryFailure(new RedisException("MOVED redirection loop detected. Node " + source.getAddr() + " has further redirect to " + ex.getUrl()));
if (t.isCancelled()) return; if (!f.isSuccess()) { PendingRequest<?> p = pendingRequests.remove(txId); if (p != null) { p.promise.completeExceptionally(f.cause()); p.timeout.cancel();
public void cancelStatsTimeout() { if (statTimeout != null) { statTimeout.cancel(); statTimeout = null; } }
@Override public void operationComplete(Future<Void> future) throws Exception { if (future.isCancelled() && connectionFuture.cancel(false)) { log.debug("Connection obtaining canceled for batch"); details.getTimeout().cancel(); if (attemptPromise.cancel(false)) { free(entry); } } } };
@Override public void run(Timeout timeout) { if (!timeout.isCancelled()) { updateDevice(deviceId, Device.STATUS_UNKNOWN, null); } } }, deviceTimeout, TimeUnit.MILLISECONDS));
@Override public void schedule(final SchedulerKey key, final Runnable runnable, long delay, TimeUnit unit) { Timeout timeout = executorService.newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { try { runnable.run(); } finally { scheduledFutures.remove(key); } } }, delay, unit); if (!timeout.isExpired()) { scheduledFutures.put(key, timeout); } }
scheduleNewIdleChannelDetector(timeout.task());
protected <R, V> void checkAttemptFuture(final NodeSource source, final AsyncDetails<V, R> details, Future<R> future, final boolean ignoreRedirect) { details.getTimeout().cancel(); if (future.isCancelled()) { return; details.removeMainPromiseListener(); if (future.cause() instanceof RedisMovedException && !ignoreRedirect) { RedisMovedException ex = (RedisMovedException) future.cause(); if (source.getRedirect() == Redirect.MOVED) { details.getMainPromise().tryFailure(new RedisException("MOVED redirection loop detected. Node " + source.getAddr() + " has further redirect to " + ex.getUrl()));
protected void cancelLastRequestTimeout() { if (null != _lastRequestTimeout) { _lastRequestTimeout.cancel(); //If task is already executed, no side-effect _lastRequestTimeout = null; } }
@Override public void operationComplete(Future<Void> future) throws Exception { if (future.isCancelled() && connectionFuture.cancel(false)) { log.debug("Connection obtaining canceled for batch"); details.getTimeout().cancel(); if (attemptPromise.cancel(false)) { free(entry); } } } };
public void cancel() { if (cancelled.compareAndSet(false, true)) { if (requestTimeout != null) { requestTimeout.cancel(); RequestTimeoutTimerTask.class.cast(requestTimeout.task()).clean(); requestTimeout = null; } if (readTimeout != null) { readTimeout.cancel(); ReadTimeoutTimerTask.class.cast(readTimeout.task()).clean(); readTimeout = null; } } } }
@Override public void run(Timeout timeout) throws Exception { if (timeout.isCancelled()) { return; } CompletableFuture<Void> recheckFuture = new CompletableFuture<>(); List<CompletableFuture<Void>> futures = Lists.newArrayListWithExpectedSize(2); client.getLookup().getTopicsUnderNamespace(namespaceName, subscriptionMode).thenAccept(topics -> { if (log.isDebugEnabled()) { log.debug("Get topics under namespace {}, topics.size: {}", namespaceName.toString(), topics.size()); topics.forEach(topicName -> log.debug("Get topics under namespace {}, topic: {}", namespaceName.toString(), topicName)); } List<String> newTopics = PulsarClientImpl.topicsPatternFilter(topics, topicsPattern); List<String> oldTopics = PatternMultiTopicsConsumerImpl.this.getTopics(); futures.add(topicsChangeListener.onTopicsAdded(topicsListsMinus(newTopics, oldTopics))); futures.add(topicsChangeListener.onTopicsRemoved(topicsListsMinus(oldTopics, newTopics))); FutureUtil.waitForAll(futures) .thenAccept(finalFuture -> recheckFuture.complete(null)) .exceptionally(ex -> { log.warn("[{}] Failed to recheck topics change: {}", topic, ex.getMessage()); recheckFuture.completeExceptionally(ex); return null; }); }); // schedule the next re-check task client.timer().newTimeout(PatternMultiTopicsConsumerImpl.this, Math.min(1, conf.getPatternAutoDiscoveryPeriod()), TimeUnit.MINUTES); }
@Override public void scheduleCallback(final SchedulerKey key, final Runnable runnable, long delay, TimeUnit unit) { Timeout timeout = executorService.newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { ctx.executor().execute(new Runnable() { @Override public void run() { try { runnable.run(); } finally { scheduledFutures.remove(key); } } }); } }, delay, unit); if (!timeout.isExpired()) { scheduledFutures.put(key, timeout); } }
scheduleNewIdleChannelDetector(timeout.task());
protected <R, V> void checkAttemptFuture(final NodeSource source, final AsyncDetails<V, R> details, Future<R> future, final boolean ignoreRedirect) { details.getTimeout().cancel(); if (future.isCancelled()) { return; details.removeMainPromiseListener(); if (future.cause() instanceof RedisMovedException && !ignoreRedirect) { RedisMovedException ex = (RedisMovedException) future.cause(); if (source.getRedirect() == Redirect.MOVED) { details.getMainPromise().tryFailure(new RedisException("MOVED redirection loop detected. Node " + source.getAddr() + " has further redirect to " + ex.getUrl()));