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