Skip to content

Commit a443f31

Browse files
authored
jobs: fixed duplicate id error when creating VM work jobs (#3871)
This PR removes related VMWorkjob records when the async_job table is cleaned out. Fixes: #3829
1 parent 5ae65bf commit a443f31

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.apache.cloudstack.framework.jobs.AsyncJobExecutionContext;
5050
import org.apache.cloudstack.framework.jobs.AsyncJobManager;
5151
import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao;
52+
import org.apache.cloudstack.framework.jobs.dao.VmWorkJobDao;
5253
import org.apache.cloudstack.framework.jobs.dao.AsyncJobJoinMapDao;
5354
import org.apache.cloudstack.framework.jobs.dao.AsyncJobJournalDao;
5455
import org.apache.cloudstack.framework.jobs.dao.SyncQueueItemDao;
@@ -131,6 +132,8 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager,
131132
@Inject
132133
private VMInstanceDao _vmInstanceDao;
133134
@Inject
135+
private VmWorkJobDao _vmWorkJobDao;
136+
@Inject
134137
private VolumeDetailsDao _volumeDetailsDao;
135138
@Inject
136139
private VolumeDao _volsDao;
@@ -898,6 +901,9 @@ protected void expungeAsyncJob(final AsyncJobVO job) {
898901
Transaction.execute(new TransactionCallbackNoReturn() {
899902
@Override
900903
public void doInTransactionWithoutResult(TransactionStatus status) {
904+
if ("VmWork".equals(job.getType())) {
905+
_vmWorkJobDao.expunge(job.getId());
906+
}
901907
_jobDao.expunge(job.getId());
902908
// purge corresponding sync queue item
903909
_queueMgr.purgeAsyncJobQueueItemId(job.getId());

0 commit comments

Comments
 (0)