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)