private void cleanupOffloaded(long ledgerId, UUID uuid, String offloadDriverName, /* * TODO: use driver name to * identify offloader */ Map<String, String> offloadDriverMetadata, String cleanupReason) { Retries.run(Backoff.exponentialJittered(TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toHours(1)).limit(10), Retries.NonFatalPredicate, () -> config.getLedgerOffloader().deleteOffloaded(ledgerId, uuid, offloadDriverMetadata), scheduledExecutor, name).whenComplete((ignored, exception) -> { if (exception != null) { log.warn("Error cleaning up offload for {}, (cleanup reason: {})", ledgerId, cleanupReason, exception); } }); }
.thenCompose(readHandle -> config.getLedgerOffloader().offload(readHandle, uuid, extraMetadata)) .thenCompose((ignore) -> { return Retries.run(Backoff.exponentialJittered(TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toHours(1)).limit(10), FAIL_ON_CONFLICT,
private void cleanupOffloaded(long ledgerId, UUID uuid, String offloadDriverName, /* TODO: use driver name to identify offloader */ Map<String, String> offloadDriverMetadata, String cleanupReason) { Retries.run(Backoff.exponentialJittered(TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toHours(1)).limit(10), Retries.NonFatalPredicate, () -> config.getLedgerOffloader().deleteOffloaded(ledgerId, uuid, offloadDriverMetadata), scheduledExecutor, name) .whenComplete((ignored, exception) -> { if (exception != null) { log.warn("Error cleaning up offload for {}, (cleanup reason: {})", ledgerId, cleanupReason, exception); } }); }
@Override public Stream<Long> toBackoffs() { Stream<Long> backoffStream; switch (type) { case DECORRELATED: backoffStream = decorrelatedJittered(startMs, maxMs); break; case EQUAL: backoffStream = equalJittered(startMs, maxMs); break; case EXPONENTIAL: default: backoffStream = exponentialJittered(startMs, maxMs); break; } if (limit >= 0) { return backoffStream.limit(limit); } else { return backoffStream; } } }
.thenCompose(readHandle -> config.getLedgerOffloader().offload(readHandle, uuid, extraMetadata)) .thenCompose((ignore) -> { return Retries.run(Backoff.exponentialJittered(TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toHours(1)).limit(10), FAIL_ON_CONFLICT,