Make sure to let VM question answer monitor exit gracefully

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e051490c
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e051490c
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e051490c

Branch: refs/heads/master
Commit: e051490cea9ad659e05853fd8b38728c06dbfd8f
Parents: 4a414d3
Author: Kelven Yang <[email protected]>
Authored: Mon Feb 3 14:01:10 2014 -0800
Committer: Kelven Yang <[email protected]>
Committed: Fri Feb 28 15:35:58 2014 -0800

----------------------------------------------------------------------
 .../hypervisor/vmware/mo/VirtualMachineMO.java     | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e051490c/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
----------------------------------------------------------------------
diff --git 
a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java 
b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index 663adbf..263c656 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -248,12 +248,17 @@ public class VirtualMachineMO extends BaseMO {
             }
         });
 
-        boolean result = _context.getVimClient().waitForTask(morTask);
-        if (result) {
-            _context.waitForTaskProgressDone(morTask);
-            return true;
-        } else {
-            s_logger.error("VMware powerOnVM_Task failed due to " + 
TaskMO.getTaskFailureInfo(_context, morTask));
+        try {
+            boolean result = _context.getVimClient().waitForTask(morTask);
+            if (result) {
+                _context.waitForTaskProgressDone(morTask);
+                return true;
+            } else {
+                s_logger.error("VMware powerOnVM_Task failed due to " + 
TaskMO.getTaskFailureInfo(_context, morTask));
+            }
+        } finally {
+            // make sure to let VM question monitor exit
+            flags[0] = true;
         }
 
         return false;

Reply via email to