@Override public void onFailure(Throwable throwable) { fail(throwable); } }, directExecutor());
@Override public void start() { try { // transition to running if (!stateMachine.transitionToRunning()) { // query already running or finished return; } ListenableFuture<?> future = task.execute(statement, transactionManager, metadata, accessControl, stateMachine, parameters); Futures.addCallback(future, new FutureCallback<Object>() { @Override public void onSuccess(@Nullable Object result) { stateMachine.transitionToFinishing(); } @Override public void onFailure(Throwable throwable) { fail(throwable); } }, directExecutor()); } catch (Throwable e) { fail(e); throwIfInstanceOf(e, Error.class); } }
@Override public void start() { try { // transition to running if (!stateMachine.transitionToRunning()) { // query already running or finished return; } CompletableFuture<?> future = task.execute(statement, transactionManager, metadata, accessControl, stateMachine); future.whenComplete((o, throwable) -> { if (throwable == null) { stateMachine.transitionToFinishing(); } else { fail(throwable); } }); } catch (Throwable e) { fail(e); if (!(e instanceof RuntimeException)) { throw Throwables.propagate(e); } } }