From 294a0a92bee1479ebdfeed256d645308bf59dab7 Mon Sep 17 00:00:00 2001 From: Liran M <77168114+liran2000@users.noreply.github.com> Date: Tue, 2 Aug 2022 15:04:25 +0300 Subject: [PATCH 1/2] ISSUE-2105 Retry mechanism without delay causing failures Solution: Retry mechanism with proper delay via backoff strategy. --- .../codecentric/boot/admin/server/services/IntervalCheck.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-admin-server/src/main/java/de/codecentric/boot/admin/server/services/IntervalCheck.java b/spring-boot-admin-server/src/main/java/de/codecentric/boot/admin/server/services/IntervalCheck.java index a1591b5b873..f27620eddba 100644 --- a/spring-boot-admin-server/src/main/java/de/codecentric/boot/admin/server/services/IntervalCheck.java +++ b/spring-boot-admin-server/src/main/java/de/codecentric/boot/admin/server/services/IntervalCheck.java @@ -80,7 +80,7 @@ public void start() { this.subscription = Flux.interval(this.interval) .doOnSubscribe((s) -> log.debug("Scheduled {}-check every {}", this.name, this.interval)) .log(log.getName(), Level.FINEST).subscribeOn(this.scheduler).concatMap((i) -> this.checkAllInstances()) - .retryWhen(Retry.indefinitely() + .retryWhen(Retry.backoff(Long.MAX_VALUE, Duration.ofSeconds(1)) .doBeforeRetry((s) -> log.warn("Unexpected error in {}-check", this.name, s.failure()))) .subscribe(); } From 7ac394d567c50ff2914021222add76f277e02d48 Mon Sep 17 00:00:00 2001 From: Liran M <77168114+liran2000@users.noreply.github.com> Date: Tue, 2 Aug 2022 15:05:14 +0300 Subject: [PATCH 2/2] ISSUE-2105 Retry mechanism without delay causing failures align unit test --- .../boot/admin/server/services/IntervalCheckTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-admin-server/src/test/java/de/codecentric/boot/admin/server/services/IntervalCheckTest.java b/spring-boot-admin-server/src/test/java/de/codecentric/boot/admin/server/services/IntervalCheckTest.java index 9b5a81a159e..cf0d618dcc2 100644 --- a/spring-boot-admin-server/src/test/java/de/codecentric/boot/admin/server/services/IntervalCheckTest.java +++ b/spring-boot-admin-server/src/test/java/de/codecentric/boot/admin/server/services/IntervalCheckTest.java @@ -88,7 +88,7 @@ public void should_check_after_error() throws InterruptedException { when(this.checkFn.apply(any())).thenReturn(Mono.error(new RuntimeException("Test"))).thenReturn(Mono.empty()); this.intervalCheck.start(); - Thread.sleep(100); + Thread.sleep(1500); verify(this.checkFn, atLeast(2)).apply(InstanceId.of("Test")); }