CompletableFuture<Void> unlockingPromise = new CompletableFuture<>(); unlockingPromise.whenComplete((res, ex) -> { ledgersListMutex.unlock(); if (ex != null) { finalPromise.completeExceptionally(ex);
CompletableFuture<PositionImpl> unlockingPromise = new CompletableFuture<>(); unlockingPromise.whenComplete((res, ex) -> { offloadMutex.unlock(); if (ex != null) { finalPromise.completeExceptionally(ex);
@Override public void run() { cbm.lock(); if (salary.value() == 1000) salary.add(2000); cbm.unlock(); Assert.assertEquals(salary.value(), 3000); } }).start();
offloadMutex.unlock(); if (exception != null) { callback.offloadFailed(new ManagedLedgerException(exception), ctx);
@Override public void run() { // Ensuring that all threads have started counter++; cbm.lock(); // Protected Code salary.set(0); int raise = 0; if (ab.compareAndSet(false, true)) raise = 2; else raise = -2; // Due to protection no thread will ever execute this line while (salary.value() < 1000000) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } if (salary.value() % 2 == 0) salary.add(raise); } Assert.assertEquals(salary.value(), 1000000); ab.compareAndSet(true, false); // End of Protected Code cbm.unlock(); } }
trimmerMutex.unlock(); promise.completeExceptionally(new ManagedLedgerAlreadyClosedException("Can't trim closed ledger")); return; } else { promise.completeExceptionally(new ManagedLedgerException("Couldn't find reader position")); trimmerMutex.unlock(); return; trimmerMutex.unlock(); promise.complete(null); return; trimmerMutex.unlock(); return;
CompletableFuture<Void> unlockingPromise = new CompletableFuture<>(); unlockingPromise.whenComplete((res, ex) -> { ledgersListMutex.unlock(); if (ex != null) { finalPromise.completeExceptionally(ex);
CompletableFuture<PositionImpl> unlockingPromise = new CompletableFuture<>(); unlockingPromise.whenComplete((res, ex) -> { offloadMutex.unlock(); if (ex != null) { finalPromise.completeExceptionally(ex);
offloadMutex.unlock(); if (exception != null) { callback.offloadFailed(new ManagedLedgerException(exception), ctx);
trimmerMutex.unlock(); promise.completeExceptionally(new ManagedLedgerAlreadyClosedException("Can't trim closed ledger")); return; } else { promise.completeExceptionally(new ManagedLedgerException("Couldn't find reader position")); trimmerMutex.unlock(); return; trimmerMutex.unlock(); promise.complete(null); return; trimmerMutex.unlock(); return;