You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by "Andrew Kennedy (JIRA)" <ji...@apache.org> on 2014/12/15 17:34:13 UTC
[jira] [Updated] (BROOKLYN-101) Rebind waits (for long time) to ssh
for inferMachineDetails
[ https://issues.apache.org/jira/browse/BROOKLYN-101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Kennedy updated BROOKLYN-101:
------------------------------------
Description:
When rebinding (particularly when some of the VMs are no longer reachable), the rebind thread will sometimes ssh to the VM to call `inferMachineDetails`. It should definitely not block rebind in this way.
The stacktrace (found with `jstack`) is shown below.
{noformat}
"brooklyn-execmanager-WoWZ5MWt-0" daemon prio=10 tid=0x00007fc4fd1f2800 nid=0x7b3c waiting on condition [0x00007fc50047f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000b44a3020> (a java.util.concurrent.FutureTask)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:425)
at java.util.concurrent.FutureTask.get(FutureTask.java:187)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
at brooklyn.util.task.BasicTask.get(BasicTask.java:343)
at brooklyn.util.task.BasicTask.getUnchecked(BasicTask.java:352)
at brooklyn.location.basic.BasicMachineDetails.forSshMachineLocation(BasicMachineDetails.java:97)
at brooklyn.location.basic.SshMachineLocation.inferMachineDetails(SshMachineLocation.java:902)
at brooklyn.location.jclouds.JcloudsSshMachineLocation.inferMachineDetails(JcloudsSshMachineLocation.java:301)
at brooklyn.location.basic.SshMachineLocation.getMachineDetails(SshMachineLocation.java:893)
- locked <0x00000000c70c5ae0> (a java.lang.Object)
at brooklyn.location.basic.SshMachineLocation.getOsDetails(SshMachineLocation.java:883)
at brooklyn.location.jclouds.JcloudsSshMachineLocation.toMetadataRecord(JcloudsSshMachineLocation.java:322)
at brooklyn.management.internal.LocalUsageManager.recordLocationEvent(LocalUsageManager.java:237)
- locked <0x00000000c573b2a0> (a java.lang.Object)
at brooklyn.management.internal.LocalLocationManager.recordLocationEvent(LocalLocationManager.java:337)
at brooklyn.management.internal.LocalLocationManager.access$3(LocalLocationManager.java:335)
at brooklyn.management.internal.LocalLocationManager$1.apply(LocalLocationManager.java:248)
at brooklyn.management.internal.LocalLocationManager$1.apply(LocalLocationManager.java:1)
at brooklyn.management.internal.LocalLocationManager.recursively(LocalLocationManager.java:346)
at brooklyn.management.internal.LocalLocationManager.recursively(LocalLocationManager.java:351)
at brooklyn.management.internal.LocalLocationManager.manageRecursive(LocalLocationManager.java:227)
at brooklyn.management.internal.LocalLocationManager.manageRebindedRoot(LocalLocationManager.java:205)
at brooklyn.entity.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:955)
at brooklyn.entity.rebind.RebindManagerImpl$2.call(RebindManagerImpl.java:490)
at brooklyn.entity.rebind.RebindManagerImpl$2.call(RebindManagerImpl.java:1)
at brooklyn.util.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:469)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
was:
When rebinding (particularly when some of the VMs are no longer reachable), the rebind thread will sometimes ssh to the VM to call `inferMachineDetails`. It should definitely not block rebind in this way.
The stacktrace (found with `jstack`) is shown below.
```
"brooklyn-execmanager-WoWZ5MWt-0" daemon prio=10 tid=0x00007fc4fd1f2800 nid=0x7b3c waiting on condition [0x00007fc50047f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000b44a3020> (a java.util.concurrent.FutureTask)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:425)
at java.util.concurrent.FutureTask.get(FutureTask.java:187)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
at brooklyn.util.task.BasicTask.get(BasicTask.java:343)
at brooklyn.util.task.BasicTask.getUnchecked(BasicTask.java:352)
at brooklyn.location.basic.BasicMachineDetails.forSshMachineLocation(BasicMachineDetails.java:97)
at brooklyn.location.basic.SshMachineLocation.inferMachineDetails(SshMachineLocation.java:902)
at brooklyn.location.jclouds.JcloudsSshMachineLocation.inferMachineDetails(JcloudsSshMachineLocation.java:301)
at brooklyn.location.basic.SshMachineLocation.getMachineDetails(SshMachineLocation.java:893)
- locked <0x00000000c70c5ae0> (a java.lang.Object)
at brooklyn.location.basic.SshMachineLocation.getOsDetails(SshMachineLocation.java:883)
at brooklyn.location.jclouds.JcloudsSshMachineLocation.toMetadataRecord(JcloudsSshMachineLocation.java:322)
at brooklyn.management.internal.LocalUsageManager.recordLocationEvent(LocalUsageManager.java:237)
- locked <0x00000000c573b2a0> (a java.lang.Object)
at brooklyn.management.internal.LocalLocationManager.recordLocationEvent(LocalLocationManager.java:337)
at brooklyn.management.internal.LocalLocationManager.access$3(LocalLocationManager.java:335)
at brooklyn.management.internal.LocalLocationManager$1.apply(LocalLocationManager.java:248)
at brooklyn.management.internal.LocalLocationManager$1.apply(LocalLocationManager.java:1)
at brooklyn.management.internal.LocalLocationManager.recursively(LocalLocationManager.java:346)
at brooklyn.management.internal.LocalLocationManager.recursively(LocalLocationManager.java:351)
at brooklyn.management.internal.LocalLocationManager.manageRecursive(LocalLocationManager.java:227)
at brooklyn.management.internal.LocalLocationManager.manageRebindedRoot(LocalLocationManager.java:205)
at brooklyn.entity.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:955)
at brooklyn.entity.rebind.RebindManagerImpl$2.call(RebindManagerImpl.java:490)
at brooklyn.entity.rebind.RebindManagerImpl$2.call(RebindManagerImpl.java:1)
at brooklyn.util.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:469)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
```
> Rebind waits (for long time) to ssh for inferMachineDetails
> -----------------------------------------------------------
>
> Key: BROOKLYN-101
> URL: https://issues.apache.org/jira/browse/BROOKLYN-101
> Project: Brooklyn
> Issue Type: Bug
> Affects Versions: 0.7.0-SNAPSHOT
> Reporter: Aled Sage
>
> When rebinding (particularly when some of the VMs are no longer reachable), the rebind thread will sometimes ssh to the VM to call `inferMachineDetails`. It should definitely not block rebind in this way.
> The stacktrace (found with `jstack`) is shown below.
> {noformat}
> "brooklyn-execmanager-WoWZ5MWt-0" daemon prio=10 tid=0x00007fc4fd1f2800 nid=0x7b3c waiting on condition [0x00007fc50047f000]
> java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x00000000b44a3020> (a java.util.concurrent.FutureTask)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:425)
> at java.util.concurrent.FutureTask.get(FutureTask.java:187)
> at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
> at brooklyn.util.task.BasicTask.get(BasicTask.java:343)
> at brooklyn.util.task.BasicTask.getUnchecked(BasicTask.java:352)
> at brooklyn.location.basic.BasicMachineDetails.forSshMachineLocation(BasicMachineDetails.java:97)
> at brooklyn.location.basic.SshMachineLocation.inferMachineDetails(SshMachineLocation.java:902)
> at brooklyn.location.jclouds.JcloudsSshMachineLocation.inferMachineDetails(JcloudsSshMachineLocation.java:301)
> at brooklyn.location.basic.SshMachineLocation.getMachineDetails(SshMachineLocation.java:893)
> - locked <0x00000000c70c5ae0> (a java.lang.Object)
> at brooklyn.location.basic.SshMachineLocation.getOsDetails(SshMachineLocation.java:883)
> at brooklyn.location.jclouds.JcloudsSshMachineLocation.toMetadataRecord(JcloudsSshMachineLocation.java:322)
> at brooklyn.management.internal.LocalUsageManager.recordLocationEvent(LocalUsageManager.java:237)
> - locked <0x00000000c573b2a0> (a java.lang.Object)
> at brooklyn.management.internal.LocalLocationManager.recordLocationEvent(LocalLocationManager.java:337)
> at brooklyn.management.internal.LocalLocationManager.access$3(LocalLocationManager.java:335)
> at brooklyn.management.internal.LocalLocationManager$1.apply(LocalLocationManager.java:248)
> at brooklyn.management.internal.LocalLocationManager$1.apply(LocalLocationManager.java:1)
> at brooklyn.management.internal.LocalLocationManager.recursively(LocalLocationManager.java:346)
> at brooklyn.management.internal.LocalLocationManager.recursively(LocalLocationManager.java:351)
> at brooklyn.management.internal.LocalLocationManager.manageRecursive(LocalLocationManager.java:227)
> at brooklyn.management.internal.LocalLocationManager.manageRebindedRoot(LocalLocationManager.java:205)
> at brooklyn.entity.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:955)
> at brooklyn.entity.rebind.RebindManagerImpl$2.call(RebindManagerImpl.java:490)
> at brooklyn.entity.rebind.RebindManagerImpl$2.call(RebindManagerImpl.java:1)
> at brooklyn.util.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:469)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)