From 6df38427cffe9cab5a2a842571941a97a3a07b52 Mon Sep 17 00:00:00 2001 From: Min Chen Date: Tue, 16 Sep 2014 15:14:08 -0700 Subject: [PATCH] CLOUDSTACK-7566:Many jobs getting stuck in pending state and cloud is unusable. (cherry picked from commit a2d85c8cae5f603bbcfcd3659c1207f0bfe461a7) Signed-off-by: Rohit Yadav Conflicts: framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java --- .../framework/jobs/impl/AsyncJobManagerImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java index 2ba5d1e7d3b..3e26fc1c005 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java @@ -255,14 +255,17 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, s_logger.debug("Publish async job-" + jobId + " complete on message bus"); } + publishOnEventBus(job, "complete"); // publish before the instance type and ID are wiped out + if (s_logger.isDebugEnabled()) { - s_logger.debug("Wake up jobs related to job-" + jobId); + s_logger.debug("Wake up jobs related to job- " + jobId); } + List wakeupList = Transaction.execute(new TransactionCallback>() { @Override public List doInTransaction(TransactionStatus status) { if (s_logger.isDebugEnabled()) { - s_logger.debug("Update db status for job-" + jobId); + s_logger.debug("Update db status for job- " + jobId); } job.setCompleteMsid(getMsid()); job.setStatus(jobStatus); @@ -279,7 +282,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, _jobDao.update(jobId, job); if (s_logger.isDebugEnabled()) { - s_logger.debug("Wake up jobs joined with job-" + jobId + " and disjoin all subjobs created from job- " + jobId); + s_logger.debug("Wake up jobs joined with job- " + jobId + " and disjoin all subjobs created from job- " + jobId); } List wakeupList = wakeupByJoinedJobCompletion(jobId); _joinMapDao.disjoinAllJobs(jobId);