This is an automated email from the ASF dual-hosted git repository. heneveld pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit da098f739989a0435560f0d0c8ce6d1f3ddb9d9f Author: Alex Heneveld <[email protected]> AuthorDate: Mon Mar 20 12:33:00 2023 +0000 fix bug in handling one retry case if duration specified without count, it could fail --- .../core/workflow/steps/flow/RetryWorkflowStep.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/RetryWorkflowStep.java b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/RetryWorkflowStep.java index 926fdb5fbc..8770336e5f 100644 --- a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/RetryWorkflowStep.java +++ b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/flow/RetryWorkflowStep.java @@ -108,21 +108,24 @@ public class RetryWorkflowStep extends WorkflowStepDefinition { Instant now = Instant.now(); if (count==null) { if (duration==null) return Maybe.absent("No limit"); + Optional<Instant> oldest = retries.stream().min(Instant::compareTo); if (oldest.isPresent() && duration.isShorterThan(Duration.between(oldest.get(), now))) { return Maybe.of( (retries.size()==1 ? "1 retry" : retries.size()+" retries") + " since "+Duration.between(oldest.get(), now)+" ago (limit "+this+")"); } - } - List<Instant> filtered = retries.stream().filter(r -> duration == null || duration.isLongerThan(Duration.between(r, now))).collect(Collectors.toList()); - if (filtered.size() >= count) { - if (filtered.isEmpty()) return Maybe.of("Max count 0 reached"); - return Maybe.of( - (filtered.size() < retries.size() ? retries.size()+" retries total, "+filtered.size() : - (retries.size()==1 ? "1 retry" : retries.size()+" retries")+" total" )+ - " since "+(Duration.between(filtered.get(0), now))+" ago (limit "+this+")"); + } else { + List<Instant> filtered = retries.stream().filter(r -> duration == null || duration.isLongerThan(Duration.between(r, now))).collect(Collectors.toList()); + if (filtered.size() >= count) { + if (filtered.isEmpty()) return Maybe.of("Max count 0 reached"); + return Maybe.of( + (filtered.size() < retries.size() ? retries.size() + " retries total, " + filtered.size() : + (retries.size() == 1 ? "1 retry" : retries.size() + " retries") + " total") + + " since " + (Duration.between(filtered.get(0), now)) + " ago (limit " + this + ")"); + } } + return Maybe.absent("Limit not reached"); }
