From 1d8eab2a11e65dfcfb020a5a2eb18af4151411c7 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Tue, 22 Feb 2011 17:39:48 -0800 Subject: [PATCH] Let reset job description to be in API standard --- server/src/com/cloud/async/AsyncJobManagerImpl.java | 11 +++++++++-- server/src/com/cloud/async/dao/AsyncJobDao.java | 2 +- server/src/com/cloud/async/dao/AsyncJobDaoImpl.java | 5 +++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/async/AsyncJobManagerImpl.java b/server/src/com/cloud/async/AsyncJobManagerImpl.java index 713b520fbca..ad6a30a9321 100644 --- a/server/src/com/cloud/async/AsyncJobManagerImpl.java +++ b/server/src/com/cloud/async/AsyncJobManagerImpl.java @@ -663,7 +663,7 @@ public class AsyncJobManagerImpl implements AsyncJobManager, ClusterManagerListe List items = _queueMgr.getActiveQueueItems(msHost.getId(), true); cleanupPendingJobs(items); _queueMgr.resetQueueProcess(msHost.getId()); - _jobDao.resetJobProcess(msHost.getId()); + _jobDao.resetJobProcess(msHost.getId(), BaseCmd.INTERNAL_ERROR, getResetResultMessage()); txn.commit(); } catch(Throwable e) { s_logger.warn("Unexpected exception ", e); @@ -680,7 +680,7 @@ public class AsyncJobManagerImpl implements AsyncJobManager, ClusterManagerListe List l = _queueMgr.getActiveQueueItems(getMsid(), false); cleanupPendingJobs(l); _queueMgr.resetQueueProcess(getMsid()); - _jobDao.resetJobProcess(getMsid()); + _jobDao.resetJobProcess(getMsid(), BaseCmd.INTERNAL_ERROR, getResetResultMessage()); } catch(Throwable e) { s_logger.error("Unexpected exception " + e.getMessage(), e); } @@ -691,6 +691,13 @@ public class AsyncJobManagerImpl implements AsyncJobManager, ClusterManagerListe GC_INTERVAL, TimeUnit.MILLISECONDS); return true; + } + + private static String getResetResultMessage() { + ExceptionResponse resultObject = new ExceptionResponse(); + resultObject.setErrorCode(BaseCmd.INTERNAL_ERROR); + resultObject.setErrorText("job cancelled because of management server restart"); + return ApiSerializerHelper.toSerializedStringOld(resultObject); } @Override diff --git a/server/src/com/cloud/async/dao/AsyncJobDao.java b/server/src/com/cloud/async/dao/AsyncJobDao.java index 9c243fb777b..fa274b6b0ac 100644 --- a/server/src/com/cloud/async/dao/AsyncJobDao.java +++ b/server/src/com/cloud/async/dao/AsyncJobDao.java @@ -29,5 +29,5 @@ public interface AsyncJobDao extends GenericDao { AsyncJobVO findInstancePendingAsyncJob(String instanceType, long instanceId); List findInstancePendingAsyncJobs(AsyncJob.Type instanceType, Long accountId); List getExpiredJobs(Date cutTime, int limit); - void resetJobProcess(long msid); + void resetJobProcess(long msid, int jobResultCode, String jobResultMessage); } diff --git a/server/src/com/cloud/async/dao/AsyncJobDaoImpl.java b/server/src/com/cloud/async/dao/AsyncJobDaoImpl.java index c97267b708a..58695f59023 100644 --- a/server/src/com/cloud/async/dao/AsyncJobDaoImpl.java +++ b/server/src/com/cloud/async/dao/AsyncJobDaoImpl.java @@ -107,8 +107,9 @@ public class AsyncJobDaoImpl extends GenericDaoBase implements } @DB - public void resetJobProcess(long msid) { - String sql = "UPDATE async_job SET job_status=2, job_result='job cancelled because of management server restart' where job_status=0 AND (job_complete_msid=? OR (job_complete_msid IS NULL AND job_init_msid=?))"; + public void resetJobProcess(long msid, int jobResultCode, String jobResultMessage) { + String sql = "UPDATE async_job SET job_status=" + AsyncJobResult.STATUS_FAILED + ", job_result_code=" + jobResultCode + + ", job_result='" + jobResultMessage + "' where job_status=0 AND (job_complete_msid=? OR (job_complete_msid IS NULL AND job_init_msid=?))"; Transaction txn = Transaction.currentTxn(); PreparedStatement pstmt = null;