@Override public ResponseT call() { try { // NOTE: unlike gax's AttemptCallable, this ignores rpc timeouts externalFuture.setAttemptFuture(new NonCancellableFuture<ResponseT>()); if (externalFuture.isDone()) { return null; } ApiFuture<ResponseT> internalFuture = callable.futureCall(request, callContext); externalFuture.setAttemptFuture(internalFuture); } catch (Throwable e) { externalFuture.setAttemptFuture(ApiFutures.<ResponseT>immediateFailedFuture(e)); } return null; } }
try { if (throwable instanceof CancellationException) { NonCancellableFuture<ResponseT> future = new NonCancellableFuture<>(); future.cancelPrivately(); latestCompletedAttemptResult = future; attemptResult = shouldRetry ? null : latestCompletedAttemptResult; if (prevAttemptResult instanceof NonCancellableFuture) { ((NonCancellableFuture<ResponseT>) prevAttemptResult).cancelPrivately(); attemptResult = shouldRetry ? null : latestCompletedAttemptResult; if (prevAttemptResult instanceof NonCancellableFuture) { ((NonCancellableFuture<ResponseT>) prevAttemptResult).setExceptionPrivately(throwable); attemptResult = shouldRetry ? null : latestCompletedAttemptResult; if (prevAttemptResult instanceof NonCancellableFuture) { ((NonCancellableFuture<ResponseT>) prevAttemptResult).setPrivately(response);
try { if (throwable instanceof CancellationException) { NonCancellableFuture<ResponseT> future = new NonCancellableFuture<>(); future.cancelPrivately(); latestCompletedAttemptResult = future; attemptResult = shouldRetry ? null : latestCompletedAttemptResult; if (prevAttemptResult instanceof NonCancellableFuture) { ((NonCancellableFuture<ResponseT>) prevAttemptResult).cancelPrivately(); attemptResult = shouldRetry ? null : latestCompletedAttemptResult; if (prevAttemptResult instanceof NonCancellableFuture) { ((NonCancellableFuture<ResponseT>) prevAttemptResult).setExceptionPrivately(throwable); attemptResult = shouldRetry ? null : latestCompletedAttemptResult; if (prevAttemptResult instanceof NonCancellableFuture) { ((NonCancellableFuture<ResponseT>) prevAttemptResult).setPrivately(response);
public ApiFuture<ResponseT> getAttemptResult() { synchronized (lock) { if (attemptResult == null) { attemptResult = new NonCancellableFuture<>(); } return attemptResult; } }
public ApiFuture<ResponseT> getAttemptResult() { synchronized (lock) { if (attemptResult == null) { attemptResult = new NonCancellableFuture<>(); } return attemptResult; } }
@Override public ResponseT call() { try { // NOTE: unlike gax's AttemptCallable, this ignores rpc timeouts externalFuture.setAttemptFuture(new NonCancellableFuture<ResponseT>()); if (externalFuture.isDone()) { return null; } ApiFuture<ResponseT> internalFuture = callable.futureCall(request, callContext); externalFuture.setAttemptFuture(internalFuture); } catch (Throwable e) { externalFuture.setAttemptFuture(ApiFutures.<ResponseT>immediateFailedFuture(e)); } return null; } }
@Override public ResponseT call() { ApiCallContext callContext = originalCallContext; try { Duration rpcTimeout = externalFuture.getAttemptSettings().getRpcTimeout(); if (!rpcTimeout.isZero()) { callContext = callContext.withTimeout(rpcTimeout); } externalFuture.setAttemptFuture(new NonCancellableFuture<ResponseT>()); if (externalFuture.isDone()) { return null; } callContext .getTracer() .attemptStarted(externalFuture.getAttemptSettings().getOverallAttemptCount()); ApiFuture<ResponseT> internalFuture = callable.futureCall(request, callContext); externalFuture.setAttemptFuture(internalFuture); } catch (Throwable e) { externalFuture.setAttemptFuture(ApiFutures.<ResponseT>immediateFailedFuture(e)); } return null; } }
@Override public ResponseT call() { ApiCallContext callContext = originalCallContext; try { Duration rpcTimeout = externalFuture.getAttemptSettings().getRpcTimeout(); if (!rpcTimeout.isZero()) { callContext = callContext.withTimeout(rpcTimeout); } externalFuture.setAttemptFuture(new NonCancellableFuture<ResponseT>()); if (externalFuture.isDone()) { return null; } callContext .getTracer() .attemptStarted(externalFuture.getAttemptSettings().getOverallAttemptCount()); ApiFuture<ResponseT> internalFuture = callable.futureCall(request, callContext); externalFuture.setAttemptFuture(internalFuture); } catch (Throwable e) { externalFuture.setAttemptFuture(ApiFutures.<ResponseT>immediateFailedFuture(e)); } return null; } }
externalFuture.setAttemptFuture(new NonCancellableFuture<ResponseT>()); if (externalFuture.isDone()) { return null;
externalFuture.setAttemptFuture(new NonCancellableFuture<ResponseT>()); if (externalFuture.isDone()) { return null;