Daniel Erez has uploaded a new change for review.

Change subject: core: LSM - rollback on non-running VM
......................................................................

core: LSM - rollback on non-running VM

LiveMigrateDiskCommand:
Initiating rollback if the VM stops during migration.
On each step of the migration process a new command
is created (in order to execute the next task),
if the VM is no longer running the previous tasks
should be reverted/cleared.

LiveSnapshotTaskHandler:
On compensation, image's status should be reverted to OK.
Updating status using DestinationImageId since ImageId might
be obsolete - depending on which step the failure occurred
(when taking a snapshot, a new active image is generated).

Change-Id: I7aafc5cd63f961470124c984afb2e7a9d74a0de2
Bug-Url: https://bugzilla.redhat.com/872316
Signed-off-by: Daniel Erez <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
2 files changed, 15 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/8998/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java
index bdf9ae6..857cbfa 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java
@@ -34,6 +34,11 @@
     public LiveMigrateDiskCommand(T parameters) {
         super(parameters);
 
+        if (VMStatus.Up != getVm().getstatus()) {
+            endWithFailure();
+            return;
+        }
+
         setVdsId(getVm().getrun_on_vds().getValue());
         getParameters().setVdsId(getVdsId());
 
@@ -134,4 +139,13 @@
     public VdcActionType getActionType() {
         return super.getActionType();
     }
+
+    @Override
+    protected void endWithFailure() {
+        if (isEndSuccessfully()) {
+            getParameters().incrementExecutionIndex();
+        }
+        getParameters().setTaskGroupSuccess(false);
+        setSucceeded(true);
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
index cf981e2..424b242 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
@@ -73,6 +73,7 @@
     public void compensate() {
         // Unlock the image we left locked
         
ImagesHandler.updateImageStatus(enclosingCommand.getParameters().getImageId(), 
ImageStatus.OK);
+        
ImagesHandler.updateImageStatus(enclosingCommand.getParameters().getDestinationImageId(),
 ImageStatus.OK);
     }
 
     @Override


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7aafc5cd63f961470124c984afb2e7a9d74a0de2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to