You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/12/11 15:50:01 UTC

[jira] [Commented] (BROOKLYN-549) Rebind policy fails when uses DSL to reference owning entity

    [ https://issues.apache.org/jira/browse/BROOKLYN-549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16286061#comment-16286061 ] 

ASF GitHub Bot commented on BROOKLYN-549:
-----------------------------------------

Github user geomacy commented on the issue:

    https://github.com/apache/brooklyn-server/pull/888
  
    Looks good to me, & tests pass. Note to readers, the description on the PR is out of date now that @aledsage has fixed the issue.  Will merge.


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