@Override CompletableFuture<Void> getFailureOp(CommitData cd) { return CompletableFuture.supplyAsync(() -> { getStats().setRejected(cd.getRejected()); try { // Does this need to be async? checkForOrphanedLocks(cd); } catch (Exception e) { throw new CompletionException(e); } return null; }, env.getSharedResources().getSyncCommitExecutor()).thenCompose(v -> rollbackLocks(cd)); } }
@Override CompletableFuture<Void> getFailureOp(CommitData cd) { return CompletableFuture.supplyAsync(() -> { getStats().setRejected(cd.getRejected()); try { // Does this need to be async? checkForOrphanedLocks(cd); } catch (Exception e) { throw new CompletionException(e); } return null; }, env.getSharedResources().getSyncCommitExecutor()).thenCompose(v -> rollbackLocks(cd)); } }
@Override CompletableFuture<Void> getFailureOp(CommitData cd) { // TODO can this be simplified by pushing some code to the superclass? return CompletableFuture.supplyAsync(() -> { final ConditionalMutation pcm = Iterables.getOnlyElement(createMutations(cd)); cd.addPrimaryToRejected(); getStats().setRejected(cd.getRejected()); // TODO do async try { checkForOrphanedLocks(cd); } catch (Exception e) { throw new CompletionException(e); } if (checkForAckCollision(pcm)) { cd.commitObserver.alreadyAcknowledged(); } else { cd.commitObserver.commitFailed(cd.getShortCollisionMessage()); } return null; }, env.getSharedResources().getSyncCommitExecutor()); }
@Override CompletableFuture<Void> getFailureOp(CommitData cd) { // TODO can this be simplified by pushing some code to the superclass? return CompletableFuture.supplyAsync(() -> { final ConditionalMutation pcm = Iterables.getOnlyElement(createMutations(cd)); cd.addPrimaryToRejected(); getStats().setRejected(cd.getRejected()); // TODO do async try { checkForOrphanedLocks(cd); } catch (Exception e) { throw new CompletionException(e); } if (checkForAckCollision(pcm)) { cd.commitObserver.alreadyAcknowledged(); } else { cd.commitObserver.commitFailed(cd.getShortCollisionMessage()); } return null; }, env.getSharedResources().getSyncCommitExecutor()); }
Executor se = env.getSharedResources().getSyncCommitExecutor(); return CompletableFuture.supplyAsync(() -> { try {
Executor se = env.getSharedResources().getSyncCommitExecutor(); return CompletableFuture.supplyAsync(() -> { try {