/** * Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true */ public WaitQueue.Signal register() { return orderOnOrBefore.waiting.register(); }
/** * register to be signalled when a barrier waiting on us is, or maybe, blocking general progress, * so we should try more aggressively to progress */ public WaitQueue.Signal isBlockingSignal() { return isBlockingSignal.register(); }
/** * register to be signalled when a barrier waiting on us is, or maybe, blocking general progress, * so we should try more aggressively to progress */ public WaitQueue.Signal isBlockingSignal() { return isBlockingSignal.register(); }
/** * Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true */ public WaitQueue.Signal register() { return orderOnOrBefore.waiting.register(); }
/** * register to be signalled when a barrier waiting on us is, or maybe, blocking general progress, * so we should try more aggressively to progress */ public WaitQueue.Signal isBlockingSignal() { return isBlockingSignal.register(); }
/** * register to be signalled when a barrier waiting on us is, or maybe, blocking general progress, * so we should try more aggressively to progress */ public WaitQueue.Signal isBlockingSignal() { return isBlockingSignal.register(); }
/** * Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true */ public WaitQueue.Signal register() { return orderOnOrBefore.waiting.register(); }
/** * register to be signalled when a barrier waiting on us is, or maybe, blocking general progress, * so we should try more aggressively to progress */ public WaitQueue.Signal isBlockingSignal() { return isBlockingSignal.register(); }
/** * Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true */ public WaitQueue.Signal register() { return orderOnOrBefore.waiting.register(); }
/** * Register to be signalled once allPriorOpsAreFinished() or allPriorOpsAreFinishedOrSafe() may return true */ public WaitQueue.Signal register() { return orderOnOrBefore.waiting.register(); }
/** * Sync immediately, but don't block for the sync to cmplete */ public WaitQueue.Signal requestExtraSync() { WaitQueue.Signal signal = syncComplete.register(); haveWork.release(1); return signal; }
void waitForSync(int position, Timer waitingOnCommit) { while (lastSyncedOffset < position) { WaitQueue.Signal signal = waitingOnCommit != null ? syncComplete.register(waitingOnCommit.time()) : syncComplete.register(); if (lastSyncedOffset < position) signal.awaitUninterruptibly(); else signal.cancel(); } }
void awaitAvailableSegment(CommitLogSegment currentAllocatingFrom) { do { WaitQueue.Signal prepared = segmentPrepared.register(commitLog.metrics.waitingOnSegmentAllocation.time()); if (availableSegment == null && allocatingFrom == currentAllocatingFrom) prepared.awaitUninterruptibly(); else prepared.cancel(); } while (availableSegment == null && allocatingFrom == currentAllocatingFrom); }
void awaitAvailableSegment(CommitLogSegment currentAllocatingFrom) { do { WaitQueue.Signal prepared = segmentPrepared.register(commitLog.metrics.waitingOnSegmentAllocation.time()); if (availableSegment == null && allocatingFrom == currentAllocatingFrom) prepared.awaitUninterruptibly(); else prepared.cancel(); } while (availableSegment == null && allocatingFrom == currentAllocatingFrom); }
void awaitAvailableSegment(CommitLogSegment currentAllocatingFrom) { do { WaitQueue.Signal prepared = segmentPrepared.register(commitLog.metrics.waitingOnSegmentAllocation.time()); if (availableSegment == null && allocatingFrom == currentAllocatingFrom) prepared.awaitUninterruptibly(); else prepared.cancel(); } while (availableSegment == null && allocatingFrom == currentAllocatingFrom); }
void awaitDiskSync() { while (segment.lastSyncedOffset < position) { WaitQueue.Signal signal = segment.syncComplete.register(CommitLog.instance.metrics.waitingOnCommit.time()); if (segment.lastSyncedOffset < position) signal.awaitUninterruptibly(); else signal.cancel(); } }
public void await() throws InterruptedException { if (isSignaled()) return; if (waiting == null) waitingUpdater.compareAndSet(this, null, new WaitQueue()); WaitQueue.Signal s = waiting.register(); if (isSignaled()) s.cancel(); else s.await(); assert isSignaled(); }