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");
         }
 

Reply via email to