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 09803fd23f add config keys for all the supported workflow policy options 09803fd23f is described below commit 09803fd23f94f040221d96141d78892ccd2d0664 Author: Alex Heneveld <a...@cloudsoft.io> AuthorDate: Thu Jul 27 00:35:15 2023 +0100 add config keys for all the supported workflow policy options and tidy up how it is shared with WorkflowSensor --- .../java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java | 7 ++----- .../java/org/apache/brooklyn/core/workflow/WorkflowSensor.java | 9 ++++++--- .../org/apache/brooklyn/core/workflow/WorkflowBasicTest.java | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java index e54b4b0b89..02043513b0 100644 --- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java +++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java @@ -46,7 +46,7 @@ import java.util.function.Supplier; * Configurable policy which runs workflow according to schedule and/or trigger. */ @Beta -public class WorkflowPolicy<T> extends AbstractPolicy { +public class WorkflowPolicy<T> extends AbstractPolicy implements WorkflowCommonConfig { private static final Logger LOG = LoggerFactory.getLogger(WorkflowPolicy.class); @@ -56,9 +56,6 @@ public class WorkflowPolicy<T> extends AbstractPolicy { public static final ConfigKey<DslPredicates.DslPredicate> CONDITION = ConfigKeys.newConfigKey(DslPredicates.DslPredicate.class, "condition", "Optional condition required for this sensor feed to run"); - public static final ConfigKey<Map<String,Object>> INPUT = WorkflowCommonConfig.INPUT; - public static final ConfigKey<List<Object>> STEPS = WorkflowCommonConfig.STEPS; - public static final ConfigKey<String> UNIQUE_TAG_CAMEL = WorkflowSensor.UNIQUE_TAG_CAMEL; public static final ConfigKey<String> UNIQUE_TAG_UNDERSCORE = WorkflowSensor.UNIQUE_TAG_UNDERSCORE; public static final ConfigKey<String> UNIQUE_TAG_DASH = WorkflowSensor.UNIQUE_TAG_DASH; @@ -144,7 +141,7 @@ public class WorkflowPolicy<T> extends AbstractPolicy { .condition(new ConditionSupplierFromAdjunct()); Set<PollConfig> pollConfigs = MutableSet.of(pc); - poller.schedulePoll(this, pollConfigs, new WorkflowSensor.WorkflowPollCallable( + poller.schedulePoll(this, pollConfigs, new WorkflowSensor.WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType.POLICY, getDisplayName() + " (policy)", config().getBag(), this), new PolicyNoOpPollHandler()); if (!isSuspended()) resume(); diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java index d86b623631..fb562546d1 100644 --- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java +++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java @@ -99,7 +99,8 @@ public class WorkflowSensor<T> extends AbstractAddTriggerableSensor<T> implement LOG.debug("Adding workflow sensor {} to {}", sensor.getName(), entity); } - WorkflowPollCallable wc = new WorkflowPollCallable("Workflow for sensor " + sensor.getName(), params, null); + WorkflowPollCallable wc = new WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType.SENSOR, + "Workflow for sensor " + sensor.getName(), params, null); FunctionPollConfig<Object,Object> pollConfig = new FunctionPollConfig<Object,T>(sensor) .callable(wc) .onSuccess(TypeCoercions.<T>function((Class)sensor.getTypeToken().getRawType())); @@ -156,8 +157,10 @@ public class WorkflowSensor<T> extends AbstractAddTriggerableSensor<T> implement private final String workflowCallableName; private BrooklynObject entityOrAdjunct; private final Map<String,Object> params; + private final WorkflowExecutionContext.WorkflowContextType wcType; - protected WorkflowPollCallable(String workflowCallableName, ConfigBag params, BrooklynObject entityOrAdjunct) { + protected WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType wcType, String workflowCallableName, ConfigBag params, BrooklynObject entityOrAdjunct) { + this.wcType = wcType; this.workflowCallableName = workflowCallableName; this.params = params.getAllConfigRaw(); this.entityOrAdjunct = entityOrAdjunct; @@ -175,7 +178,7 @@ public class WorkflowSensor<T> extends AbstractAddTriggerableSensor<T> implement if (entityOrAdjunct==null) entityOrAdjunct = BrooklynTaskTags.getContextEntity(Tasks.current()); if (entityOrAdjunct==null) throw new IllegalStateException("No entity adjunct or entity available for "+this); - WorkflowExecutionContext wc = WorkflowExecutionContext.newInstancePersisted(entityOrAdjunct, WorkflowExecutionContext.WorkflowContextType.SENSOR, + WorkflowExecutionContext wc = WorkflowExecutionContext.newInstancePersisted(entityOrAdjunct, wcType, workflowCallableName, ConfigBag.newInstance(params), null, null, null); Task<Object> wt = wc.getTask(false /* condition checked by poll config framework */).get(); if (entityOrAdjunct instanceof EntityAdjunct) { diff --git a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java index 098e0c23a2..347ac09ee3 100644 --- a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java @@ -409,6 +409,7 @@ public class WorkflowBasicTest extends BrooklynMgmtUnitTestSupport { if (logWatcher.getMessages().size()!=8) { // add logging for intermittent failure; sometimes we are getting way more messages than we expect + // on slow servers we might see 9, with a "Blocked by lock on lock-for-incrementor, currently held by <other task>" at the end throw new IllegalStateException("Wrong number of messages found ("+logWatcher.getMessages().size()+", not 8): "+logWatcher.getMessages()); }