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);
}