You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2023/03/20 13:34:09 UTC

[brooklyn-server] 06/09: fix bug in handling one retry case

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 <al...@cloudsoft.io>
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");
         }