You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by "Aled Sage (JIRA)" <ji...@apache.org> on 2016/07/11 22:53:11 UTC

[jira] [Created] (BROOKLYN-314) Rebind failed: calling getOsDetails failed in entity driver's constructor

Aled Sage created BROOKLYN-314:
----------------------------------

             Summary: Rebind failed: calling getOsDetails failed in entity driver's constructor
                 Key: BROOKLYN-314
                 URL: https://issues.apache.org/jira/browse/BROOKLYN-314
             Project: Brooklyn
          Issue Type: Bug
    Affects Versions: 0.9.0
            Reporter: Aled Sage


A customer hit a rebind error. Brooklyn failed to instantiate the entity because the driver's constructor called {{SshMachineLocation.getOsDetails}}, which tried to call the vCloudDirector API. This call failed because the VM no longer exists. The exception was propagated, causing the entity to fail to be re-created.

We should avoid propagating the exception, e.g. by returning an OsDetails saying "unknown".

Even better, we shouldn't be calling the cloud api at this point. But the call to getOsDetails is happening from the customer code.

Should we store the OsDetails in the machine persisted state, so we don't need to look it up again?

{noformat}
2016-07-11 12:46:13,258 ERROR o.a.b.l.common.BasicLauncher [main]: Subsystem for persistence had startup error (continuing with startup): org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Failure rebinding; 2 errors including: problem rebinding entity DKtbsydb (JenkinsNodeImpl{id=DKtbsydb}): InvalidCacheLoadException: CacheLoader returned null for key urn:vcloud:vm:43ebf981-3900-491c-bfd1-68ca1ab3a9ea.
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: 
	at org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:128) ~[brooklyn-utils-common-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebind(RebindManagerImpl.java:513) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.promoteToMaster(HighAvailabilityManagerImpl.java:836) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.checkMaster(HighAvailabilityManagerImpl.java:810) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.publishAndCheck(HighAvailabilityManagerImpl.java:592) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.changeMode(HighAvailabilityManagerImpl.java:315) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.start(HighAvailabilityManagerImpl.java:255) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.launcher.common.BasicLauncher.startPersistence(BasicLauncher.java:642) [brooklyn-launcher-common-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.launcher.common.BasicLauncher.handlePersistence(BasicLauncher.java:506) [brooklyn-launcher-common-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.launcher.common.BasicLauncher.start(BasicLauncher.java:424) [brooklyn-launcher-common-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.cli.Main$LaunchCommand.call(Main.java:461) [brooklyn-cli-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.cli.Main$LaunchCommand.call(Main.java:196) [brooklyn-cli-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.cli.AbstractMain.execCli(AbstractMain.java:252) [brooklyn-cli-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.cli.AbstractMain.execCli(AbstractMain.java:244) [brooklyn-cli-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at io.cloudsoft.amp.Main.main(Main.java:36) [amp-launcher-3.1.1.jar:na]
Caused by: java.util.concurrent.ExecutionException: org.apache.brooklyn.util.exceptions.CompoundRuntimeException: Failure rebinding; 2 errors including: problem rebinding entity DKtbsydb (JenkinsNodeImpl{id=DKtbsydb}): InvalidCacheLoadException: CacheLoader returned null for key urn:vcloud:vm:43ebf981-3900-491c-bfd1-68ca1ab3a9ea.
	at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:1.7.0_101]
	at java.util.concurrent.FutureTask.get(FutureTask.java:188) ~[na:1.7.0_101]
	at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63) ~[guava-17.0.jar:na]
	at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebind(RebindManagerImpl.java:511) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	... 13 common frames omitted
org.apache.brooklyn.util.exceptions.CompoundRuntimeException: Failure rebinding; 2 errors including: problem rebinding entity DKtbsydb (JenkinsNodeImpl{id=DKtbsydb}): InvalidCacheLoadException: CacheLoader returned null for key urn:vcloud:vm:43ebf981-3900-491c-bfd1-68ca1ab3a9ea.
	at org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:393) ~[brooklyn-utils-common-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDoneImpl(RebindExceptionHandlerImpl.java:497) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDone(RebindExceptionHandlerImpl.java:413) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:267) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:558) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:508) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:506) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_101]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_101]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_101]
	at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_101]
Caused by: java.lang.IllegalStateException: problem rebinding entity DKtbsydb (JenkinsNodeImpl{id=DKtbsydb})
	at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onRebindFailed(RebindExceptionHandlerImpl.java:304) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.reconstructEverything(RebindIteration.java:625) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:242) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:265) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	... 8 common frames omitted
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: 
	at org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:128) ~[brooklyn-utils-common-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactory.build(ReflectiveEntityDriverFactory.java:266) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.entity.drivers.BasicEntityDriverManager.build(BasicEntityDriverManager.java:53) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.entity.software.base.SoftwareProcessImpl.newDriver(SoftwareProcessImpl.java:126) ~[brooklyn-software-base-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.entity.software.base.SoftwareProcessImpl.doInitDriver(SoftwareProcessImpl.java:539) ~[brooklyn-software-base-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.entity.software.base.SoftwareProcessImpl.initDriver(SoftwareProcessImpl.java:519) ~[brooklyn-software-base-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.entity.software.base.SoftwareProcessImpl.rebind(SoftwareProcessImpl.java:458) ~[brooklyn-software-base-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.AbstractBrooklynObjectRebindSupport.reconstruct(AbstractBrooklynObjectRebindSupport.java:69) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.reconstructEverything(RebindIteration.java:623) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	... 11 common frames omitted
Caused by: java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_101]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_101]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_101]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_101]
	at org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactory.build(ReflectiveEntityDriverFactory.java:263) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	... 18 common frames omitted
Caused by: com.google.common.cache.CacheLoader$InvalidCacheLoadException: CacheLoader returned null for key urn:vcloud:vm:43ebf981-3900-491c-bfd1-68ca1ab3a9ea.
	at com.google.common.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2348) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2318) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:na]
	at org.jclouds.vcloud.director.v1_5.functions.URNToHref.apply(URNToHref.java:49) ~[vcloud-director-1.9.2-cloudsoft.20160428.1116.jar:1.9.2-cloudsoft.20160428.1116]
	at org.jclouds.vcloud.director.v1_5.functions.URNToHref.apply(URNToHref.java:37) ~[vcloud-director-1.9.2-cloudsoft.20160428.1116.jar:1.9.2-cloudsoft.20160428.1116]
	at org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointInParametersOrNull(RestAnnotationProcessor.java:495) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointFor(RestAnnotationProcessor.java:518) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.RestAnnotationProcessor.findEndpoint(RestAnnotationProcessor.java:370) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:192) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:129) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.InvokeHttpMethod.toCommand(InvokeHttpMethod.java:188) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:84) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) ~[jclouds-core-1.9.2.jar:1.9.2]
	at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117) ~[jclouds-core-1.9.2.jar:1.9.2]
	at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87) ~[guava-17.0.jar:na]
	at com.sun.proxy.$Proxy201.get(Unknown Source) ~[na:na]
	at org.jclouds.vcloud.director.v1_5.compute.strategy.VCloudDirectorComputeServiceAdapter.getNode(VCloudDirectorComputeServiceAdapter.java:597) ~[vcloud-director-1.9.2-cloudsoft.20160428.1116.jar:1.9.2-cloudsoft.20160428.1116]
	at org.jclouds.vcloud.director.v1_5.compute.strategy.VCloudDirectorComputeServiceAdapter.getNode(VCloudDirectorComputeServiceAdapter.java:106) ~[vcloud-director-1.9.2-cloudsoft.20160428.1116.jar:1.9.2-cloudsoft.20160428.1116]
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.getNode(AdaptingComputeServiceStrategies.java:137) ~[jclouds-compute-1.9.2.jar:1.9.2]
	at org.jclouds.compute.internal.BaseComputeService.getNodeMetadata(BaseComputeService.java:402) ~[jclouds-compute-1.9.2.jar:1.9.2]
	at org.apache.brooklyn.location.jclouds.JcloudsSshMachineLocation.getOptionalNode(JcloudsSshMachineLocation.java:219) ~[brooklyn-locations-jclouds-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.location.jclouds.JcloudsSshMachineLocation.getOptionalOperatingSystem(JcloudsSshMachineLocation.java:498) ~[brooklyn-locations-jclouds-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.location.jclouds.JcloudsSshMachineLocation.inferMachineDetails(JcloudsSshMachineLocation.java:522) ~[brooklyn-locations-jclouds-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.location.ssh.SshMachineLocation.getMachineDetails(SshMachineLocation.java:1056) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at org.apache.brooklyn.location.ssh.SshMachineLocation.getOsDetails(SshMachineLocation.java:1037) ~[brooklyn-core-0.9.1-20160429.1930.jar:0.9.1-20160429.1930]
	at com.acme.JenkinsSshDriver.<init>(JenkinsSshDriver.java:53) ~[acme-amp-jenkins-1.3.1-Final.jar:1.3-Final]
	... 23 common frames omitted
{noformat}





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)