diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java index 33a1df79b37..6acc93387c1 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java @@ -55,6 +55,7 @@ public class JobSerializerHelper { gsonBuilder.setVersion(1.5); s_logger.debug("Job GSON Builder initialized."); gsonBuilder.registerTypeAdapter(Class.class, new ClassTypeAdapter()); + gsonBuilder.registerTypeAdapter(Throwable.class, new ThrowableTypeAdapter()); s_gson = gsonBuilder.create(); } diff --git a/server/src/com/cloud/vm/VmWorkJobDispatcher.java b/server/src/com/cloud/vm/VmWorkJobDispatcher.java index dcb91d24b9e..8b04e9127e8 100644 --- a/server/src/com/cloud/vm/VmWorkJobDispatcher.java +++ b/server/src/com/cloud/vm/VmWorkJobDispatcher.java @@ -77,7 +77,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch _asyncJobMgr.completeAsyncJob(job.getId(), AsyncJobConstants.STATUS_SUCCEEDED, 0, null); } catch(Throwable e) { s_logger.error("Unable to complete " + job, e); - _asyncJobMgr.completeAsyncJob(job.getId(), AsyncJobConstants.STATUS_FAILED, 0, e); + _asyncJobMgr.completeAsyncJob(job.getId(), AsyncJobConstants.STATUS_FAILED, 0, e.getMessage()); } finally { CallContext.unregister(); }