in src/main/java/com/spotify/ffwd/http/RetryWithDelay.java [44:59]
public Observable<?> call(Observable<? extends Throwable> attempts) {
return attempts.flatMap(new Func1<Throwable, Observable<?>>() {
@Override
public Observable<?> call(Throwable throwable) {
if (++retryCount < maxRetries) {
final long retryMillis = retryDelayMillis;
final long jitter = (long)(random.nextFloat() * retryMillis);
retryDelayMillis = Math.min(retryDelayMillis * 2, maxDelayMillis);
return Observable.timer(retryMillis + jitter, TimeUnit.MILLISECONDS);
}
// Max retries hit. Just pass the error along.
return Observable.error(throwable);
}
});
}