From 5ae65bfab058a37eda0f90f9a495658ae7f3d37e Mon Sep 17 00:00:00 2001 From: Spaceman1984 <49917670+Spaceman1984@users.noreply.github.com> Date: Wed, 12 Feb 2020 15:33:14 +0200 Subject: [PATCH 1/2] ui: Fixed root volume resize from ui (#3873) This PR fixes the volume resize action for a root volume from the UI. Fixes: #3860 #3874 --- ui/scripts/storage.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ui/scripts/storage.js b/ui/scripts/storage.js index ab9747990eb..f790593fc3d 100644 --- a/ui/scripts/storage.js +++ b/ui/scripts/storage.js @@ -1575,13 +1575,13 @@ if (newDiskOffering != null && newDiskOffering.length > 0) { array1.push("&diskofferingid=" + encodeURIComponent(newDiskOffering)); } - if (selectedDiskOfferingObj.iscustomized == true) { + if (args.context.volumes[0].type == "ROOT" || selectedDiskOfferingObj.iscustomized == true) { cloudStack.addNewSizeToCommandUrlParameterArrayIfItIsNotNullAndHigherThanZero(array1, args.data.newsize); } var minIops; var maxIops - if (selectedDiskOfferingObj.iscustomizediops == true) { + if (selectedDiskOfferingObj != null && selectedDiskOfferingObj.iscustomizediops == true) { minIops = args.data.minIops; maxIops = args.data.maxIops; } @@ -1593,13 +1593,12 @@ if (maxIops != null && maxIops.length > 0) { array1.push("&maxiops=" + encodeURIComponent(maxIops)); } - //if original disk size > new disk size - if ((args.context.volumes[0].type == "ROOT") - && (args.context.volumes[0].size > (newSize * (1024 * 1024 * 1024)))) { + //if original disk size > new disk size + if (args.context.volumes[0].type == "ROOT" && + args.context.volumes[0].size > (args.data.newsize * (1024 * 1024 * 1024))) { return args.response.error('message.volume.root.shrink.disk.size'); } - $.ajax({ url: createURL("resizeVolume&id=" + args.context.volumes[0].id + array1.join("")), dataType: "json", From a443f31b782674ea3e46b0217ecc97f781297ff5 Mon Sep 17 00:00:00 2001 From: Spaceman1984 <49917670+Spaceman1984@users.noreply.github.com> Date: Wed, 12 Feb 2020 15:36:01 +0200 Subject: [PATCH 2/2] 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 --- .../cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java index 378e2f5bed9..6126b50101d 100644 --- a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java +++ b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java @@ -49,6 +49,7 @@ import org.apache.cloudstack.framework.jobs.AsyncJobDispatcher; import org.apache.cloudstack.framework.jobs.AsyncJobExecutionContext; import org.apache.cloudstack.framework.jobs.AsyncJobManager; import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao; +import org.apache.cloudstack.framework.jobs.dao.VmWorkJobDao; import org.apache.cloudstack.framework.jobs.dao.AsyncJobJoinMapDao; import org.apache.cloudstack.framework.jobs.dao.AsyncJobJournalDao; import org.apache.cloudstack.framework.jobs.dao.SyncQueueItemDao; @@ -131,6 +132,8 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @Inject private VMInstanceDao _vmInstanceDao; @Inject + private VmWorkJobDao _vmWorkJobDao; + @Inject private VolumeDetailsDao _volumeDetailsDao; @Inject private VolumeDao _volsDao; @@ -898,6 +901,9 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, Transaction.execute(new TransactionCallbackNoReturn() { @Override public void doInTransactionWithoutResult(TransactionStatus status) { + if ("VmWork".equals(job.getType())) { + _vmWorkJobDao.expunge(job.getId()); + } _jobDao.expunge(job.getId()); // purge corresponding sync queue item _queueMgr.purgeAsyncJobQueueItemId(job.getId());