throw propagate(te); if (exceptions.size() > 0 && !any(exceptions.values(), containsThrowable(AuthorizationException.class))) { fromIterable = exceptions.keySet(); retryHandler.imposeBackoffExponentialDelay(delayStart, 2, i + 1, maxRetries,
throw propagate(te); if (exceptions.size() > 0 && !any(exceptions.values(), containsThrowable(AuthorizationException.class))) { fromIterable = exceptions.keySet(); retryHandler.imposeBackoffExponentialDelay(delayStart, 2, i + 1, maxRetries,
@SuppressWarnings("unchecked") public static <F, T> Iterable<T> transformParallel(Iterable<F> fromIterable, Function<? super F, ListenableFuture<? extends T>> function, ListeningExecutorService exec, @Nullable Long maxTime, Logger logger, String logPrefix, BackoffLimitedRetryHandler retryHandler, int maxRetries) { Map<F, Exception> exceptions = newHashMap(); Map<F, ListenableFuture<? extends T>> responses = newHashMap(); for (int i = 0; i < maxRetries; i++) { for (F from : fromIterable) { ListenableFuture<? extends T> to = function.apply(from); responses.put(from, to); } try { exceptions = awaitCompletion(responses, exec, maxTime, logger, logPrefix); } catch (TimeoutException te) { throw propagate(te); } if (!exceptions.isEmpty() && !any(exceptions.values(), containsThrowable(AuthorizationException.class))) { fromIterable = exceptions.keySet(); retryHandler.imposeBackoffExponentialDelay(delayStart, 2, i + 1, maxRetries, String.format("error %s: %s: %s", logPrefix, fromIterable, exceptions)); } else { break; } } //make sure we propagate any authorization exception so that we don't lock out accounts if (!exceptions.isEmpty()) return propagateAuthorizationOrOriginalException(new TransformParallelException(Map.class.cast(responses), exceptions, logPrefix)); return unwrap(responses.values()); }
throw propagate(te); if (exceptions.size() > 0 && !any(exceptions.values(), containsThrowable(AuthorizationException.class))) { fromIterable = exceptions.keySet(); retryHandler.imposeBackoffExponentialDelay(delayStart, 2, i + 1, maxRetries,
@SuppressWarnings("unchecked") public static <F, T> Iterable<T> transformParallel(Iterable<F> fromIterable, Function<? super F, ListenableFuture<? extends T>> function, ListeningExecutorService exec, @Nullable Long maxTime, Logger logger, String logPrefix, BackoffLimitedRetryHandler retryHandler, int maxRetries) { Map<F, Exception> exceptions = newHashMap(); Map<F, ListenableFuture<? extends T>> responses = newHashMap(); for (int i = 0; i < maxRetries; i++) { for (F from : fromIterable) { ListenableFuture<? extends T> to = function.apply(from); responses.put(from, to); } try { exceptions = awaitCompletion(responses, exec, maxTime, logger, logPrefix); } catch (TimeoutException te) { throw propagate(te); } if (!exceptions.isEmpty() && !any(exceptions.values(), containsThrowable(AuthorizationException.class))) { fromIterable = exceptions.keySet(); retryHandler.imposeBackoffExponentialDelay(delayStart, 2, i + 1, maxRetries, String.format("error %s: %s: %s", logPrefix, fromIterable, exceptions)); } else { break; } } //make sure we propagate any authorization exception so that we don't lock out accounts if (!exceptions.isEmpty()) return propagateAuthorizationOrOriginalException(new TransformParallelException(Map.class.cast(responses), exceptions, logPrefix)); return unwrap(responses.values()); }
@SuppressWarnings("unchecked") public static <F, T> Iterable<T> transformParallel(Iterable<F> fromIterable, Function<? super F, ListenableFuture<? extends T>> function, ListeningExecutorService exec, @Nullable Long maxTime, Logger logger, String logPrefix, BackoffLimitedRetryHandler retryHandler, int maxRetries) { Map<F, Exception> exceptions = newHashMap(); Map<F, ListenableFuture<? extends T>> responses = newHashMap(); for (int i = 0; i < maxRetries; i++) { for (F from : fromIterable) { ListenableFuture<? extends T> to = function.apply(from); responses.put(from, to); } try { exceptions = awaitCompletion(responses, exec, maxTime, logger, logPrefix); } catch (TimeoutException te) { throw propagate(te); } if (!exceptions.isEmpty() && !any(exceptions.values(), containsThrowable(AuthorizationException.class))) { fromIterable = exceptions.keySet(); retryHandler.imposeBackoffExponentialDelay(delayStart, 2, i + 1, maxRetries, String.format("error %s: %s: %s", logPrefix, fromIterable, exceptions)); } else { break; } } //make sure we propagate any authorization exception so that we don't lock out accounts if (!exceptions.isEmpty()) return propagateAuthorizationOrOriginalException(new TransformParallelException(Map.class.cast(responses), exceptions, logPrefix)); return unwrap(responses.values()); }