final CompletableFuture<SessionLock> createPromise, final long delayMs) { lockStateExecutor.scheduleOrdered(lockPath, new SafeRunnable() { @Override public void safeRun() {
protected void scheduleTask(Object key, SafeRunnable r, long delayMs) { closeLock.readLock().lock(); try { if (closed) { return; } scheduler.scheduleOrdered(key, r, delayMs, TimeUnit.MILLISECONDS); } finally { closeLock.readLock().unlock(); } }
final java.util.concurrent.ScheduledFuture<?> task = scheduler.scheduleOrdered(key, () -> { if (!promise.isDone() && promise.completeExceptionally(cause)) { log.info("Raise exception", cause);
scheduler.scheduleOrdered(key, () -> execute( finalResult, backoffIter,
/** * Check return code and retry if needed. * * @param rc the return code * @param isLongPoll is it a long poll request * @return is the request successful or not */ boolean checkReturnCodeAndHandleFailure(int rc, boolean isLongPoll) { if (BKException.Code.OK == rc) { numReadErrorsUpdater.set(BKLogSegmentEntryReader.this, 0); return true; } if (BKException.Code.BookieHandleNotAvailableException == rc || (isLongPoll && BKException.Code.NoSuchLedgerExistsException == rc)) { int numErrors = Math.max(1, numReadErrorsUpdater.incrementAndGet(BKLogSegmentEntryReader.this)); int nextReadBackoffTime = Math.min(numErrors * readAheadWaitTime, maxReadBackoffTime); scheduler.scheduleOrdered( getSegment().getLogSegmentId(), this, nextReadBackoffTime, TimeUnit.MILLISECONDS); } else { completeExceptionally(rc); } return false; }
private void failOrRetryOpenLedger(int rc, final LogSegmentMetadata segment) { if (isClosed()) { return; } if (isBeyondLastAddConfirmed()) { // if the reader is already caught up, let's fail the reader immediately // as we need to pull the latest metadata of this log segment. completeExceptionally(new BKTransmitException("Failed to open ledger for reading log segment " + getSegment(), rc), true); return; } // the reader is still catching up, retry opening the log segment later scheduler.scheduleOrdered( segment.getLogSegmentId(), () -> onLogSegmentMetadataUpdated(segment), conf.getZKRetryBackoffStartMillis(), TimeUnit.MILLISECONDS); }
scheduleCountUpdater.set(this, 0); backgroundScheduleTask = scheduler.scheduleOrdered( streamName, BACKGROUND_READ_SCHEDULER,