GitHub user neykov opened a pull request:
https://github.com/apache/brooklyn-server/pull/542
Resolve deferred values in containers (list, map) on
config().getNonBlocking(...)
Deferred values are not resolved in certain cases when in containers. The
error I was getting was:
```
2017-01-27 16:44:23,958 DEBUG 118 o.a.b.c.b.s.d.BrooklynDslDeferredSupplier
[ger-GCJlrQu1-259] Resolved DynamicClusterImpl{id=q9r9izpwme} from
$brooklyn:sensor("kubernetes.url")
2017-01-27 16:44:23,958 DEBUG 118 o.a.b.c.b.s.d.BrooklynDslDeferredSupplier
[ger-GCJlrQu1-625] Resolved Sensor: kubernetes.url (java.lang.Object) from
$brooklyn:sensor("kubernetes.url")
2017-01-27 16:44:23,959 WARN 143 o.a.b.u.j.c.TypeCoercerExtensible
[ger-GCJlrQu1-628] Failed to coerce collection from
java.util.Collections$UnmodifiableRandomAccessList to java.util.Collection<?
exten
ds org.apache.brooklyn.api.sensor.Sensor<?>>; returning uncoerced result to
preserve (deprecated) backwards compatibility
java.lang.IllegalStateException: Could not coerce entry 0 in
[sensor("kubernetes.url")] to java.util.Collection<? extends
org.apache.brooklyn.api.sensor.Sensor<?>>: Cannot coerce type
org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.DslSensorSupplier
to org.apache.brooklyn.api.sensor.Sensor (sensor("kubernetes.url")): no
adapter known
at
org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:40)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:26)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:337)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.guava.Maybe.getException(Maybe.java:465)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceInternal(TypeCoercerExtensible.java:125)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerce(TypeCoercerExtensible.java:108)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.core.flags.TypeCoercions.tryCoerce(TypeCoercions.java:82)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getNonBlockingResolvingSimple(AbstractConfigurationSupportInternal.java:149)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getNonBlocking(AbstractConfigurationSupportInternal.java:83)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.config.ConfigConstraints.validateAll(ConfigConstraints.java:126)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.config.ConfigConstraints.getViolations(ConfigConstraints.java:115)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.config.ConfigConstraints.assertValid(ConfigConstraints.java:73)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.entity.AbstractEntity$BasicEnricherSupport.add(AbstractEntity.java:1691)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
org.apache.brooklyn.core.objs.proxy.InternalEntityFactory$1.run(InternalEntityFactory.java:350)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_80]
at
org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:522)[120:org.apache.brooklyn.core:0.11.0.20170126_1332]
at
java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_80]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_80]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_80]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_80]
Caused by: org.apache.brooklyn.util.javalang.coerce.ClassCoercionException:
Could not coerce entry 0 in [sensor("kubernetes.url")] to
java.util.Collection<? extends org.apache.brooklyn.api.sensor.Sensor<?>>
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceCollection(TypeCoercerExtensible.java:298)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceInternal(TypeCoercerExtensible.java:122)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
... 15 more
Caused by: org.apache.brooklyn.util.javalang.coerce.ClassCoercionException:
Cannot coerce type
org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.DslSensorSupplier
to org.apache.brooklyn.api.sensor.Sensor (sensor("kubernetes.url")): no
adapter known
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)[:1.7.0_80]
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)[:1.7.0_80]
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)[:1.7.0_80]
at
java.lang.reflect.Constructor.newInstance(Constructor.java:526)[:1.7.0_80]
at
org.apache.brooklyn.util.javalang.Reflections.loadInstance(Reflections.java:347)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.Reflections.invokeConstructorFromArgs(Reflections.java:328)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.Reflections.invokeConstructorFromArgs(Reflections.java:289)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.Reflections.invokeConstructorFromArgs(Reflections.java:251)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.guava.AnyExceptionSupplier.get(AnyExceptionSupplier.java:50)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.guava.AnyExceptionSupplier.get(AnyExceptionSupplier.java:27)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:337)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
... 17 more
Caused by: org.apache.brooklyn.util.javalang.coerce.ClassCoercionException:
Cannot coerce type
org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.DslSensorSupplier
to org.apache.brooklyn.api.sensor.Sensor (sensor("kubernetes.url")): no
adapter known
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceInternal(TypeCoercerExtensible.java:212)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerce(TypeCoercerExtensible.java:108)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
at
org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible.tryCoerceCollection(TypeCoercerExtensible.java:294)[143:org.apache.brooklyn.utils-common:0.11.0.20170126_1332]
... 16 more
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/neykov/brooklyn-server
fix-nested-nonblocking-config
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/brooklyn-server/pull/542.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #542
----
commit c425099af0e3fa4b1c578ea1bb47be23be548600
Author: Svetoslav Neykov <[email protected]>
Date: 2017-01-30T15:50:53Z
Resolve deferred values in containers (list, map) on config().get(...)
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---