Idan Shaby has uploaded a new change for review.

Change subject: core: Removing Memory Volumes Before VM and Disks
......................................................................

core: Removing Memory Volumes Before VM and Disks

removeMemoryVolumes queries the VM and its disks and thus should come
before we remove them.
Note that removeMemoryVolumes can't be inside the transaction because
it's not a pure DB operation, but also contains a VDSM (SPM) call.

Change-Id: I24851385ab1c27a1da7fe8be04cfd9d8fb744b3f
Signed-off-by: Idan Shaby <ish...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
2 files changed, 8 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/31078/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
index d373a2c..f86620f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
@@ -10,6 +10,7 @@
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.context.CommandContext;
+import org.ovirt.engine.core.bll.memory.MemoryUtils;
 import org.ovirt.engine.core.bll.network.ExternalNetworkManager;
 import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter;
 import org.ovirt.engine.core.bll.quota.QuotaStorageConsumptionParameter;
@@ -49,8 +50,6 @@
 @DisableInPrepareMode
 @NonTransactiveCommandAttribute(forceCompensation = true)
 public class RemoveVmCommand<T extends RemoveVmParameters> extends 
VmCommand<T> implements QuotaStorageDependent, 
TaskHandlerCommand<RemoveVmParameters> {
-
-    private Set<String> memoryStates;
 
     /**
      * Constructor for command creation when compensation is applied on startup
@@ -97,6 +96,8 @@
             new ExternalNetworkManager(nic).deallocateIfExternal();
         }
 
+        removeMemoryVolumes();
+
         TransactionSupport.executeInNewTransaction(new 
TransactionMethod<Void>() {
             @Override
             public Void runInTransaction() {
@@ -125,12 +126,12 @@
             }
         }
 
-        removeMemoryVolumes();
-
         return true;
     }
 
     private void removeMemoryVolumes() {
+        Set<String> memoryStates =
+                
MemoryUtils.getMemoryVolumesFromSnapshots(getDbFacade().getSnapshotDao().getAll(getVmId()));
         for (String memoryState : memoryStates) {
             VdcReturnValueBase retVal = runInternalAction(
                     VdcActionType.RemoveMemoryVolumes,
@@ -295,7 +296,7 @@
         removeLunDisks();
         removeVmUsers();
         removeVmNetwork();
-        memoryStates = removeVmSnapshots();
+        removeVmSnapshots();
         removeVmStatic(getParameters().isRemovePermissions());
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
index 65f0d42..77d9d34 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java
@@ -242,8 +242,8 @@
         }
     }
 
-    protected Set<String> removeVmSnapshots() {
-        return new SnapshotsManager().removeSnapshots(getVmId());
+    protected void removeVmSnapshots() {
+        new SnapshotsManager().removeSnapshots(getVmId());
     }
 
     protected void removeVmUsers() {


-- 
To view, visit http://gerrit.ovirt.org/31078
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I24851385ab1c27a1da7fe8be04cfd9d8fb744b3f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Idan Shaby <ish...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to