Sam Corbett created BROOKLYN-396:
------------------------------------
Summary: Exception resizing DynamicCluster after rebind when
members use localhost
Key: BROOKLYN-396
URL: https://issues.apache.org/jira/browse/BROOKLYN-396
Project: Brooklyn
Issue Type: Bug
Reporter: Sam Corbett
A {{StackOverflowError}} is thrown when resizing {{DynamicCluster}} after
rebinding Brooklyn. Cluster members are VanillaSoftwareProcesses targeting
localhost. The error was not thrown in a test deployment to AWS EC2. Sample
blueprint:
{code}
location: localhost
services:
- type: org.apache.brooklyn.entity.group.DynamicCluster
brooklyn.config:
memberSpec:
$brooklyn:entitySpec:
type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
brooklyn.config:
launch.command: sleep 3
stop.command: sleep 3
checkRunning.command: true
initialSize: 2
{code}
The error is triggered by:
{code}
java.util.concurrent.ExecutionException:
org.apache.brooklyn.util.exceptions.CompoundRuntimeException: 2 errors,
including: Error invoking start at VanillaSoftwareProcessImpl{id=z6fexc5q02}:
StackOverflowError
at
org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.java:347)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.mgmt.internal.EffectorUtils.invokeMethodEffector(EffectorUtils.java:276)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.effector.MethodEffector.call(MethodEffector.java:148)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.effector.AbstractEffector.call(AbstractEffector.java:61)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.effector.AbstractEffector$1$1.call(AbstractEffector.java:83)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:522)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[na:1.8.0_05]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[na:1.8.0_05]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[na:1.8.0_05]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_05]
Caused by: org.apache.brooklyn.util.exceptions.CompoundRuntimeException: 2
errors, including: Error invoking start at
VanillaSoftwareProcessImpl{id=z6fexc5q02}: StackOverflowError
at
org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:438)
~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:425)
~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.group.DynamicClusterImpl.addInEachLocation(DynamicClusterImpl.java:865)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.group.DynamicClusterImpl.grow(DynamicClusterImpl.java:771)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.group.DynamicClusterImpl.resizeByDelta(DynamicClusterImpl.java:729)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.group.DynamicClusterImpl.resize(DynamicClusterImpl.java:578)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[na:1.8.0_05]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[na:1.8.0_05]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[na:1.8.0_05]
at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_05]
at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at
groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
~[na:na]
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
~[org.codehaus.groovy-groovy-all-2.3.7.jar:2.3.7]
at
org.apache.brooklyn.util.groovy.GroovyJavaMethods.invokeMethodOnMetaClass(GroovyJavaMethods.java:191)
~[org.apache.brooklyn-brooklyn-utils-groovy-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.java:319)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.java:343)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
... 10 common frames omitted
Caused by: java.util.concurrent.ExecutionException:
org.apache.brooklyn.core.mgmt.internal.EffectorUtils$EffectorCallPropagatedRuntimeException:
Error invoking start at VanillaSoftwareProcessImpl{id=z6fexc5q02}:
StackOverflowError
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[na:1.8.0_05]
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
[na:1.8.0_05]
at
com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
~[com.google.guava-guava-16.0.1.jar:na]
at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.group.DynamicClusterImpl.waitForTasksOnEntityStart(DynamicClusterImpl.java:901)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.group.DynamicClusterImpl.addInEachLocation(DynamicClusterImpl.java:837)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
... 29 common frames omitted
Caused by:
org.apache.brooklyn.core.mgmt.internal.EffectorUtils$EffectorCallPropagatedRuntimeException:
Error invoking start at VanillaSoftwareProcessImpl{id=z6fexc5q02}
at
org.apache.brooklyn.core.mgmt.internal.EffectorUtils$EffectorCallPropagatedRuntimeException.propagate(EffectorUtils.java:318)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.mgmt.internal.EffectorUtils$EffectorCallPropagatedRuntimeException.access$100(EffectorUtils.java:285)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.mgmt.internal.EffectorUtils.handleEffectorException(EffectorUtils.java:326)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.effector.EffectorTasks$EffectorBodyTaskFactory$2.handleException(EffectorTasks.java:90)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask.handleException(DynamicSequentialTask.java:469)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:417)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
... 5 common frames omitted
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at org.apache.brooklyn.util.core.task.Tasks$2.get(Tasks.java:293)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks.preStartAtMachineAsync(MachineLifecycleEffectorTasks.java:448)
~[org.apache.brooklyn-brooklyn-software-base-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks.startInLocation(MachineLifecycleEffectorTasks.java:365)
~[org.apache.brooklyn-brooklyn-software-base-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks.startInLocations(MachineLifecycleEffectorTasks.java:350)
~[org.apache.brooklyn-brooklyn-software-base-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks.start(MachineLifecycleEffectorTasks.java:339)
~[org.apache.brooklyn-brooklyn-software-base-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks$StartEffectorBody.call(MachineLifecycleEffectorTasks.java:240)
~[org.apache.brooklyn-brooklyn-software-base-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks$StartEffectorBody.call(MachineLifecycleEffectorTasks.java:227)
~[org.apache.brooklyn-brooklyn-software-base-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.effector.EffectorTasks$EffectorBodyTaskFactory$1.call(EffectorTasks.java:82)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)
[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
... 5 common frames omitted
Caused by: java.util.concurrent.ExecutionException: java.lang.StackOverflowError
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[na:1.8.0_05]
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
[na:1.8.0_05]
at
com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
~[com.google.guava-guava-16.0.1.jar:na]
at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
... 14 common frames omitted
java.lang.StackOverflowError: null
at
java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
~[na:1.8.0_05]
at
org.apache.brooklyn.core.objs.BrooklynDynamicType.getConfigKey(BrooklynDynamicType.java:127)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.location.internal.LocationConfigMap.getKeyAtContainerImpl(LocationConfigMap.java:110)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.location.internal.LocationConfigMap.getKeyAtContainerImpl(LocationConfigMap.java:46)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.getKeyAtContainer(AbstractConfigMapImpl.java:283)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl$1.apply(AbstractConfigMapImpl.java:332)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl$1.apply(AbstractConfigMapImpl.java:329)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AncestorContainerAndKeyValueIterator.next(AncestorContainerAndKeyValueIterator.java:59)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AncestorContainerAndKeyValueIterator.next(AncestorContainerAndKeyValueIterator.java:30)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.config.ConfigInheritances.resolveInheriting(ConfigInheritances.java:82)
~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.config.ConfigInheritances.resolveInheriting(ConfigInheritances.java:68)
~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.getConfigImpl(AbstractConfigMapImpl.java:374)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.config.internal.AbstractConfigMapImpl.getConfigInheritedRaw(AbstractConfigMapImpl.java:434)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getRaw(AbstractConfigurationSupportInternal.java:202)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.location.ssh.SshMachineLocation.getPort(SshMachineLocation.java:581)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at
org.apache.brooklyn.location.ssh.SshMachineLocation.toString(SshMachineLocation.java:956)
~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
at java.lang.String.valueOf(String.java:2979) ~[na:1.8.0_05]
at java.lang.StringBuilder.append(StringBuilder.java:131) ~[na:1.8.0_05]
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
~[na:1.8.0_05]
at java.lang.String.valueOf(String.java:2979) ~[na:1.8.0_05]
at java.lang.StringBuilder.append(StringBuilder.java:131) ~[na:1.8.0_05]
...
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)