From d2c1efe63a78e32ddaca2737a973e0d1b58ddd74 Mon Sep 17 00:00:00 2001 From: JFronny Date: Wed, 10 Jul 2024 09:41:09 +0200 Subject: [PATCH] fix: sleep in MdsTaskRetryWrapper --- .../launcher/system/mds/flow/MdsTaskRetryWrapper.java | 2 +- .../inceptum/launcher/util/ExponentialBackoff.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/flow/MdsTaskRetryWrapper.java b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/flow/MdsTaskRetryWrapper.java index 4bcb737..23baa37 100644 --- a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/flow/MdsTaskRetryWrapper.java +++ b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/flow/MdsTaskRetryWrapper.java @@ -12,7 +12,7 @@ public record MdsTaskRetryWrapper(Map backoffs, Thro public void accept(MdsMod mod) throws IOException { String key = mod.getMetadataPath().getFileName().toString() + "/" + inner.getClass().getTypeName(); ExponentialBackoff backoff = backoffs.computeIfAbsent(key, _ -> new ExponentialBackoff()); - if (!backoff.shouldTry()) return; + backoff.sleep(); try { inner.accept(mod); backoff.success(); diff --git a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/util/ExponentialBackoff.java b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/util/ExponentialBackoff.java index fe5fe77..65e7689 100644 --- a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/util/ExponentialBackoff.java +++ b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/util/ExponentialBackoff.java @@ -12,6 +12,15 @@ public class ExponentialBackoff { return retries == 0 || System.currentTimeMillis() > nextRetry; } + public void sleep() { + try { + long time = nextRetry - System.currentTimeMillis(); + if (time > 0) Thread.sleep(time); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + public void success() { retries = 0; }