[
https://issues.apache.org/jira/browse/BROOKLYN-549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16245580#comment-16245580
]
ASF GitHub Bot commented on BROOKLYN-549:
-----------------------------------------
GitHub user aledsage opened a pull request:
https://github.com/apache/brooklyn-server/pull/888
BROOKLYN-549: adds failing test
Adds test, marked as "Broken" so not run by jenkins, which demonstrates the
bug reported at https://issues.apache.org/jira/browse/BROOKLYN-549
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/aledsage/brooklyn-server BROOKLYN-549
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/brooklyn-server/pull/888.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 #888
----
----
> Rebind policy fails when uses DSL to reference owning entity
> ------------------------------------------------------------
>
> Key: BROOKLYN-549
> URL: https://issues.apache.org/jira/browse/BROOKLYN-549
> Project: Brooklyn
> Issue Type: Bug
> Reporter: Aled Sage
>
> When testing rebind with 1.0.0-SNAPSHOT, I hit the exception shown below.
> {noformat}
> 2017-11-08T15:05:56,959 WARN 123 o.a.b.c.m.r.RebindExceptionHandlerImpl
> [tures-1-thread-1] problem adding policy tfr7lcfdmb
> (ServiceReplacer{id=tfr7lcfdmb, name=Service Replacer, running=true}) to
> entity fo01banbds (DynamicCluster
> Impl{id=fo01banbds}); continuing
> java.lang.IllegalArgumentException: Error resolving Resolving config
> failureSensorToMonitor, $brooklyn:sensorName("ha.entityFailed"), in
> org.apache.brooklyn.util.core.task.BasicExecutionContext@5a3b9114([LocalManagementContext[CFq6
> B51H-jFJzr6KD], BROOKLYN-SERVER]): Context entity not available when trying
> to evaluate Brooklyn DSL
> at
> org.apache.brooklyn.util.core.task.ValueResolver.getMaybeInternal(ValueResolver.java:570)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.ValueResolver.getMaybe(ValueResolver.java:324)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.ValueResolver.get(ValueResolver.java:317)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.Tasks.resolveValue(Tasks.java:159) ~[?:?]
> at
> org.apache.brooklyn.core.config.BasicConfigKey.resolveValue(BasicConfigKey.java:447)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.BasicConfigKey.extractValue(BasicConfigKey.java:432)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.resolveRawValueFromContainerIgnoringDeprecatedNames(AbstractConfigMapImpl.java:352)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.resolveRawValueFromContainer(AbstractConfigMapImpl.java:324)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl$3.apply(AbstractConfigMapImpl.java:432)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl$3.apply(AbstractConfigMapImpl.java:428)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.getConfigImpl(AbstractConfigMapImpl.java:445)
> ~[?:?]
> at
> org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.getConfig(AbstractConfigMapImpl.java:113)
> ~[?:?]
> at
> org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.get(AbstractConfigurationSupportInternal.java:161)
> ~[?:?]
> at
> org.apache.brooklyn.core.objs.AbstractEntityAdjunct.getConfig(AbstractEntityAdjunct.java:360)
> ~[?:?]
> at
> org.apache.brooklyn.policy.ha.ServiceReplacer.setEntity(ServiceReplacer.java:114)
> ~[?:?]
> at
> org.apache.brooklyn.core.entity.AbstractEntity$BasicPolicySupport.add(AbstractEntity.java:1378)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.BasicEntityRebindSupport.addPolicies(BasicEntityRebindSupport.java:122)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.BasicEntityRebindSupport.addPolicies(BasicEntityRebindSupport.java:55)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.associateAdjunctsWithEntities(RebindIteration.java:658)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:260)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:282)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:547)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.lambda$rebind$0(RebindManagerImpl.java:503)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:143)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:141)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:227)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext.get(BasicExecutionContext.java:141)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebind(RebindManagerImpl.java:502)
> ~[?:?]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPersistenceWithoutHA(BasicLauncher.java:657)
> ~[?:?]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPersistence(BasicLauncher.java:620)
> ~[?:?]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.handlePersistence(BasicLauncher.java:516)
> ~[?:?]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPartTwo(BasicLauncher.java:438)
> ~[?:?]
> at
> org.apache.brooklyn.launcher.osgi.OsgiLauncherImpl.startOsgi(OsgiLauncherImpl.java:116)
> ~[?:?]
> at Proxy36c6dcae_9094_41a8_8fc0_83f48d7eff6b.startOsgi(Unknown
> Source) ~[?:?]
> at
> org.apache.brooklyn.launcher.osgi.start.OsgiLauncherCompleter.init(OsgiLauncherCompleter.java:36)
> ~[?:?]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
> at
> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:736)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:848)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)
> ~[?:?]
> at
> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
> ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:255)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:186)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:704)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:410)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:275)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:300)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:269)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:265)
> ~[?:?]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:255)
> ~[?:?]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
> ~[?:?]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
> ~[?:?]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
> ~[?:?]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
> ~[?:?]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
> ~[?:?]
> at
> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)
> ~[?:?]
> at
> org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730)
> ~[?:?]
> at
> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485)
> ~[?:?]
> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4563)
> ~[?:?]
> at org.apache.felix.framework.Felix.startBundle(Felix.java:2173)
> ~[?:?]
> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
> ~[?:?]
> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
> ~[?:?]
> at
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1346)
> ~[?:?]
> at
> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:891)
> ~[?:?]
> at
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1233)
> ~[?:?]
> at
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$0(FeaturesServiceImpl.java:1132)
> ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [?:?]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [?:?]
> at java.lang.Thread.run(Thread.java:748) [?:?]
> Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> at
> org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
> ~[?:?]
> at org.apache.brooklyn.util.time.Durations.get(Durations.java:63)
> ~[?:?]
> at org.apache.brooklyn.util.time.Durations.get(Durations.java:68)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.ValueResolver.getMaybeInternal(ValueResolver.java:499)
> ~[?:?]
> ... 76 more
> Caused by: java.util.concurrent.ExecutionException:
> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Context
> entity not available when trying to evaluate Brooklyn DSL
> at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
> at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:?]
> at
> com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:383) ~[?:?]
> at org.apache.brooklyn.util.time.Durations.get(Durations.java:43)
> ~[?:?]
> at org.apache.brooklyn.util.time.Durations.get(Durations.java:68)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.ValueResolver.getMaybeInternal(ValueResolver.java:499)
> ~[?:?]
> ... 76 more
> Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> at
> org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslDeferredSupplier.get(BrooklynDslDeferredSupplier.java:117)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.ValueResolver$2.call(ValueResolver.java:485)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:364)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> ~[?:?]
> ... 4 more
> Caused by: java.util.concurrent.ExecutionException:
> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Context
> entity not available when trying to evaluate Brooklyn DSL
> at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
> at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:?]
> at
> com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:383) ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslDeferredSupplier.get(BrooklynDslDeferredSupplier.java:111)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.ValueResolver$2.call(ValueResolver.java:485)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:364)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> ~[?:?]
> ... 4 more
> Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> at
> org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslDeferredSupplier.get(BrooklynDslDeferredSupplier.java:117)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$DslSensorSupplier$1.resolve(DslComponent.java:701)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$DslSensorSupplier$1.call(DslComponent.java:695)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$DslSensorSupplier$1.call(DslComponent.java:692)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> ~[?:?]
> ... 4 more
> Caused by: java.util.concurrent.ExecutionException:
> java.lang.IllegalStateException: Context entity not available when trying to
> evaluate Brooklyn DSL
> at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
> at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:?]
> at
> com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:383) ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslDeferredSupplier.get(BrooklynDslDeferredSupplier.java:111)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$DslSensorSupplier$1.resolve(DslComponent.java:701)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$DslSensorSupplier$1.call(DslComponent.java:695)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$DslSensorSupplier$1.call(DslComponent.java:692)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> ~[?:?]
> ... 4 more
> Caused by: java.lang.IllegalStateException: Context entity not available when
> trying to evaluate Brooklyn DSL
> at
> org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:40)
> ~[?:?]
> at
> org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:26)
> ~[?:?]
> at
> org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:352)
> ~[?:?]
> at org.apache.brooklyn.util.guava.Maybe$Absent.get(Maybe.java:345)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.callImpl(DslComponent.java:245)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.call(DslComponent.java:225)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.call(DslComponent.java:192)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:364)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> ~[?:?]
> ... 4 more
> Caused by: java.lang.IllegalStateException: Context entity not available when
> trying to evaluate Brooklyn DSL
> at org.apache.brooklyn.util.guava.Maybe.absent(Maybe.java:60) ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.getEntity(DslComponent.java:236)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.callImpl(DslComponent.java:241)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.call(DslComponent.java:225)
> ~[?:?]
> at
> org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.call(DslComponent.java:192)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:364)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
> ~[?:?]
> ... 4 more
> {noformat}
> This is from the clocker kubernetes blueprint, specifically the section at
> https://github.com/brooklyncentral/clocker/blob/v2.1.0/kubernetes/catalog/kubernetes/kubernetes.bom#L299-L305
> It can be reproduced in master with the following simple test:
> {noformat}
> @Test
> public void testDslInPoilcy() throws Exception {
> Entity app = createAndStartApplication(
> "services:",
> "- type: "+DynamicCluster.class.getName(),
> " brooklyn.config:",
> " initialSize: 0",
> " brooklyn.policies:",
> " - type: "+ServiceReplacer.class.getName(),
> " brooklyn.config:",
> " failureSensorToMonitor:
> $brooklyn:sensor(\"ha.entityFailed\")");
> waitForApplicationTasks(app);
>
> Entity newApp = rebind(app);
> DynamicCluster newCluster = (DynamicCluster)
> Iterables.getOnlyElement(newApp.getChildren());
> ServiceReplacer newPolicy = (ServiceReplacer)
> Iterables.find(newCluster.policies(),
> Predicates.instanceOf(ServiceReplacer.class));
> Sensor<?> newSensor =
> newPolicy.config().get(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR);
> assertEquals(newSensor.getName(), "ha.entityFailed");
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)