You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2014/01/01 00:13:24 UTC

git commit: updated refs/heads/4.3 to a03c8fe

Updated Branches:
  refs/heads/4.3 83f1f6840 -> a03c8fe66


Fix a typo caused problem in attach-volume process


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

Branch: refs/heads/4.3
Commit: a03c8fe66887427f8f536daa03c23bd3c7f6d650
Parents: 83f1f68
Author: Kelven Yang <ke...@gmail.com>
Authored: Tue Dec 31 15:12:54 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Tue Dec 31 15:13:10 2013 -0800

----------------------------------------------------------------------
 .../src/com/cloud/vm/VmWorkJobHandlerProxy.java | 27 +++++++++++++++-----
 .../com/cloud/vm/VmWorkJobWakeupDispatcher.java |  6 +++++
 .../com/cloud/storage/VolumeApiServiceImpl.java |  2 +-
 3 files changed, 27 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a03c8fe6/engine/components-api/src/com/cloud/vm/VmWorkJobHandlerProxy.java
----------------------------------------------------------------------
diff --git a/engine/components-api/src/com/cloud/vm/VmWorkJobHandlerProxy.java b/engine/components-api/src/com/cloud/vm/VmWorkJobHandlerProxy.java
index 6550281..dfc551d 100644
--- a/engine/components-api/src/com/cloud/vm/VmWorkJobHandlerProxy.java
+++ b/engine/components-api/src/com/cloud/vm/VmWorkJobHandlerProxy.java
@@ -16,6 +16,7 @@
 // under the License.
 package com.cloud.vm;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
@@ -98,16 +99,28 @@ public class VmWorkJobHandlerProxy implements VmWorkJobHandler {
 
         Method method = getHandlerMethod(work.getClass());
         if (method != null) {
-            if (s_logger.isDebugEnabled())
-                s_logger.debug("Execute VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
 
-            Object obj = method.invoke(_target, work);
+            try {
+                if (s_logger.isDebugEnabled())
+                    s_logger.debug("Execute VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
 
-            if (s_logger.isDebugEnabled())
-                s_logger.debug("Done executing VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
+                Object obj = method.invoke(_target, work);
 
-            assert (obj instanceof Pair);
-            return (Pair<JobInfo.Status, String>)obj;
+                if (s_logger.isDebugEnabled())
+                    s_logger.debug("Done executing VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
+
+                assert (obj instanceof Pair);
+                return (Pair<JobInfo.Status, String>)obj;
+            } catch (InvocationTargetException e) {
+                s_logger.error("Invocation exception, caused by: " + e.getCause());
+
+                // legacy CloudStack code relies on checked exception for error handling
+                // we need to re-throw the real exception here
+                if (e.getCause() != null && e.getCause() instanceof Exception)
+                    throw (Exception)e.getCause();
+
+                throw e;
+            }
         } else {
             s_logger.error("Unable to find handler for VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a03c8fe6/engine/orchestration/src/com/cloud/vm/VmWorkJobWakeupDispatcher.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkJobWakeupDispatcher.java b/engine/orchestration/src/com/cloud/vm/VmWorkJobWakeupDispatcher.java
index 5704f97..520a550 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkJobWakeupDispatcher.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkJobWakeupDispatcher.java
@@ -40,6 +40,12 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.vm.dao.VMInstanceDao;
 
+/**
+ * Please note: VmWorkJobWakeupDispatcher is not currently in use. It is designed for event-driven based
+ * job processing model.
+ *
+ * Current code base uses blocking calls to wait for job completion
+ */
 public class VmWorkJobWakeupDispatcher extends AdapterBase implements AsyncJobDispatcher {
     private static final Logger s_logger = Logger.getLogger(VmWorkJobWakeupDispatcher.class);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a03c8fe6/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index 36b2578..17ea86f 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -2407,7 +2407,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
     }
 
-    private Pair<JobInfo.Status, String> orchestrateDetachVolumeFromVM(VmWorkAttachVolume work) throws Exception {
+    private Pair<JobInfo.Status, String> orchestrateDetachVolumeFromVM(VmWorkDetachVolume work) throws Exception {
         orchestrateDetachVolumeFromVM(work.getVmId(), work.getVolumeId());
         return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
     }