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