CLOUDSTACK-7566:Many jobs getting stuck in pending state and cloud is unusable.

(cherry picked from commit a2d85c8cae5f603bbcfcd3659c1207f0bfe461a7)

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

Conflicts:
	framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java
This commit is contained in:
Min Chen 2014-09-16 15:14:08 -07:00 committed by Rohit Yadav
parent 95daa14e2a
commit 6df38427cf

View File

@ -255,14 +255,17 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
s_logger.debug("Publish async job-" + jobId + " complete on message bus"); 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()) { 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<Long> wakeupList = Transaction.execute(new TransactionCallback<List<Long>>() { List<Long> wakeupList = Transaction.execute(new TransactionCallback<List<Long>>() {
@Override @Override
public List<Long> doInTransaction(TransactionStatus status) { public List<Long> doInTransaction(TransactionStatus status) {
if (s_logger.isDebugEnabled()) { 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.setCompleteMsid(getMsid());
job.setStatus(jobStatus); job.setStatus(jobStatus);
@ -279,7 +282,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
_jobDao.update(jobId, job); _jobDao.update(jobId, job);
if (s_logger.isDebugEnabled()) { 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<Long> wakeupList = wakeupByJoinedJobCompletion(jobId); List<Long> wakeupList = wakeupByJoinedJobCompletion(jobId);
_joinMapDao.disjoinAllJobs(jobId); _joinMapDao.disjoinAllJobs(jobId);