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


The following commit(s) were added to refs/heads/master by this push:
     new 0f56dd8704 fix async delay for initializer, and intermittent failing 
test
0f56dd8704 is described below

commit 0f56dd870491d81370f35ae873f3698c72cc3955
Author: Alex Heneveld <[email protected]>
AuthorDate: Fri May 3 13:56:22 2024 +0100

    fix async delay for initializer, and intermittent failing test
---
 .../java/org/apache/brooklyn/camp/brooklyn/WorkflowYamlTest.java   | 4 +---
 .../org/apache/brooklyn/core/workflow/WorkflowInitializer.java     | 7 +++++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WorkflowYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WorkflowYamlTest.java
index f69138a4f8..f5d93fb499 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WorkflowYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/WorkflowYamlTest.java
@@ -1000,9 +1000,6 @@ public class WorkflowYamlTest extends AbstractYamlTest {
     }
 
     @Test
-    // non-deterministic failure seen once:
-    // testInitializerDelay:1031 failed succeeds-eventually, 75 attempts, 
30000ms elapsed:
-    // AssertionError: entity=BasicEntityImpl{id=v65dmc7x81}; 
attribute=Sensor: x (java.lang.Integer) expected [6] but found [3]
     public void testInitializerDelay() throws Exception {
         Entity app = createAndStartApplication(
                 "services:",
@@ -1020,6 +1017,7 @@ public class WorkflowYamlTest extends AbstractYamlTest {
                 "    brooklyn.config:",
                 "      name: pre-init",
                 "      steps:",
+                //"        - sleep 1s",   // to check that 'async' really does 
always wait
                 "        - set-sensor integer x = 3");
         waitForApplicationTasks(app);
         Entity entity = Iterables.getOnlyElement(app.getChildren());
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowInitializer.java 
b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowInitializer.java
index 5c1c82b0b0..0e80227a9b 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowInitializer.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowInitializer.java
@@ -35,6 +35,7 @@ import org.apache.brooklyn.util.core.task.DynamicTasks;
 import org.apache.brooklyn.util.core.task.Tasks;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.guava.Maybe;
+import org.apache.brooklyn.util.repeat.Repeater;
 import org.apache.brooklyn.util.text.Strings;
 import org.apache.brooklyn.util.time.Duration;
 import org.apache.brooklyn.util.time.Time;
@@ -101,6 +102,12 @@ public class WorkflowInitializer extends 
EntityInitializers.InitializerPatternWi
                     if (delayed) {
                         DynamicTasks.queue(Tasks.create("Delaying until " + 
delaySummary, () -> {
                             ((EntityInternal) 
entity).getManagementContext().waitForManagementStartupComplete(null);
+                            while (!Entities.isManagedActive(entity)) {
+                                if 
(!Entities.isManagedActiveOrComingUp(entity)) {
+                                    return;
+                                }
+                                Time.sleep(Repeater.DEFAULT_REAL_QUICK_PERIOD);
+                            }
                             if (delayDuration.isPositive()) 
Time.sleep(delayDuration);
                         }));
                     }

Reply via email to