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)

Reply via email to