BROOKLYN-356: workaround, by increasing timeout Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/0edce987 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/0edce987 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/0edce987
Branch: refs/heads/master Commit: 0edce9879670560c245f2f6f4df3eae9fd2c27a8 Parents: c45777f Author: Aled Sage <aled.s...@gmail.com> Authored: Wed Oct 12 14:17:01 2016 +0100 Committer: Aled Sage <aled.s...@gmail.com> Committed: Wed Oct 12 14:17:01 2016 +0100 ---------------------------------------------------------------------- .../core/objs/AbstractConfigurationSupportInternal.java | 2 +- .../org/apache/brooklyn/enricher/stock/Transformer.java | 2 +- .../apache/brooklyn/util/core/task/ValueResolver.java | 12 +++++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0edce987/core/src/main/java/org/apache/brooklyn/core/objs/AbstractConfigurationSupportInternal.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractConfigurationSupportInternal.java b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractConfigurationSupportInternal.java index 1b87d3c..61dc513 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractConfigurationSupportInternal.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractConfigurationSupportInternal.java @@ -111,7 +111,7 @@ public abstract class AbstractConfigurationSupportInternal implements BrooklynOb .tag(BrooklynTaskTags.TRANSIENT_TASK_TAG) .build()); try { - T result = t.get(ValueResolver.PRETTY_QUICK_WAIT); + T result = t.get(ValueResolver.NON_BLOCKING_WAIT); return Maybe.of(result); } catch (TimeoutException e) { t.cancel(true); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0edce987/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java index 8445076..9c4e657 100644 --- a/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java +++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java @@ -90,7 +90,7 @@ public class Transformer<T,U> extends AbstractTransformer<T,U> { return (U) Tasks.resolving(targetValueRaw).as(targetSensor.getType()) .context(entity) .description("Computing sensor "+targetSensor+" from "+targetValueRaw) - .timeout(ValueResolver.PRETTY_QUICK_WAIT) + .timeout(ValueResolver.NON_BLOCKING_WAIT) .getMaybe().orNull(); } public String toString() { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0edce987/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java index 73309ef..2942b23 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java @@ -83,7 +83,17 @@ public class ValueResolver<T> implements DeferredSupplier<T> { * <p> * See {@link #REAL_QUICK_WAIT}. */ public static Duration PRETTY_QUICK_WAIT = Duration.millis(200); - + + /** + * Period to wait if we're expecting the operation to be non-blocking, so want to abort if the + * invoked task/supplier is taking too long (likely because its value is not yet ready, and + * the invoked task is blocked waiting for it). + * <p> + * See {@link #REAL_QUICK_WAIT} and <a href="https://issues.apache.org/jira/browse/BROOKLYN-356">BROOKLYN-356</a>. + */ + @Beta + public static final Duration NON_BLOCKING_WAIT = Duration.millis(500); + /** Period to wait when we have to poll but want to give the illusion of no wait. * See {@link Repeater#DEFAULT_REAL_QUICK_PERIOD} */ public static Duration REAL_QUICK_PERIOD = Repeater.DEFAULT_REAL_QUICK_PERIOD;