[ 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)