[ 
https://issues.apache.org/jira/browse/BROOKLYN-549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aled Sage resolved BROOKLYN-549.
--------------------------------
       Resolution: Fixed
         Assignee: Aled Sage
    Fix Version/s: 1.0.0

> 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
>            Assignee: Aled Sage
>             Fix For: 1.0.0
>
>
> 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)

Reply via email to