Allon Mureinik has uploaded a new change for review. Change subject: core: [WIP] Live Storage Migration error flows ......................................................................
core: [WIP] Live Storage Migration error flows Implemented rollback stack for Live Storage Migration commands/tasks. Change-Id: Ia331e1259e7aad2282692099980291c61cafb86e Signed-off-by: Allon Mureinik <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderTaskHandler.java 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 M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java 5 files changed, 63 insertions(+), 51 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/8749/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderTaskHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderTaskHandler.java index 170e9f7..d50e951 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderTaskHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderTaskHandler.java @@ -4,7 +4,6 @@ import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; -import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.TargetDomainImageGroupVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; @@ -57,22 +56,19 @@ @Override protected VDSCommandType getRevertVDSCommandType() { - return VDSCommandType.DeleteImageGroup; + // VDSM handles the failed cloneImageGroupStructure, so no action required here. + return null; } @Override public AsyncTaskType getRevertTaskType() { - return AsyncTaskType.deleteImage; + // VDSM handles the failed cloneImageGroupStructure, so no action required here. + return null; } @Override protected VDSParametersBase getRevertVDSParameters() { - return new DeleteImageGroupVDSCommandParameters( - getEnclosingCommand().getStoragePoolId().getValue(), - getEnclosingCommand().getTargetStorageDomainId(), - getEnclosingCommand().getImageGroupId(), - getEnclosingCommand().getParameters().getPostZero(), - getEnclosingCommand().getParameters().getForceDelete(), - getEnclosingCommand().getStoragePool().getcompatibility_version().getValue()); + // VDSM handles the failed cloneImageGroupStructure, so no action required here. + return null; } } 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 9d88042..5101f57 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 @@ -28,7 +28,7 @@ import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields; @CustomLogFields({ @CustomLogField("DiskAlias") }) -@NonTransactiveCommandAttribute(forceCompensation = true) +@NonTransactiveCommandAttribute public class LiveMigrateDiskCommand<T extends LiveMigrateDiskParameters> extends MoveOrCopyDiskCommand<T> { private static final long serialVersionUID = -6216729539906812205L; 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 114fc00..2e38109 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 @@ -68,19 +68,19 @@ @Override public void compensate() { - // TODO Auto-generated method stub - + // Unlock the image we left locked + enclosingCommand.unLockImage(); } @Override public AsyncTaskType getTaskType() { - // TODO Auto-generated method stub + // No implementation - handled by the command return null; } @Override public AsyncTaskType getRevertTaskType() { - // TODO Auto-generated method stub + // No implementation - there is no live-merge return null; } @@ -98,5 +98,4 @@ return params; } - } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java index a35fbba..577c5d7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskFinishTaskHandler.java @@ -1,7 +1,6 @@ package org.ovirt.engine.core.bll.lsm; import org.ovirt.engine.core.bll.AbstractSPMAsyncTaskHandler; -import org.ovirt.engine.core.bll.VmHandler; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; @@ -11,6 +10,7 @@ import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; +import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.common.vdscommands.VmReplicateDiskParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.TransactionScopeOption; @@ -38,11 +38,14 @@ getEnclosingCommand().getDestinationImageId() ); - getEnclosingCommand().runVdsCommand(VDSCommandType.VmReplicateDiskFinish, migrationCompleteParams); + VDSReturnValue ret = + getEnclosingCommand().runVdsCommand(VDSCommandType.VmReplicateDiskFinish, migrationCompleteParams); - moveDiskInDB(); - getEnclosingCommand().unLockImage(); - VmHandler.unlockVm(getEnclosingCommand().getVm(), getEnclosingCommand().getCompensationContext()); + // If the split succeeded, update the database + if (ret.getSucceeded()) { + moveDiskInDB(); + getEnclosingCommand().unLockImage(); + } } private void moveDiskInDB() { @@ -90,28 +93,6 @@ } @Override - public AsyncTaskType getTaskType() { - return AsyncTaskType.deleteImage; - } - - @Override - protected void revertTask() { - // TODO Auto-generated method stub - } - - @Override - protected VDSCommandType getRevertVDSCommandType() { - // TODO Auto-generated method stub - return null; - } - - @Override - protected VDSParametersBase getRevertVDSParameters() { - // TODO Auto-generated method stub - return null; - } - - @Override protected VdcObjectType getTaskObjectType() { return VdcObjectType.Disk; } @@ -122,8 +103,30 @@ } @Override + public AsyncTaskType getTaskType() { + return AsyncTaskType.deleteImage; + } + + @Override + protected void revertTask() { + // No revert task - reverting is handled in the previous handler + } + + @Override + protected VDSCommandType getRevertVDSCommandType() { + // No revert task - reverting is handled in the previous handler + return null; + } + + @Override + protected VDSParametersBase getRevertVDSParameters() { + // No revert task - reverting is handled in the previous handler + return null; + } + + @Override public AsyncTaskType getRevertTaskType() { - // TODO Auto-generated method stub + // No revert task - reverting is handled in the previous handler return null; } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java index 3316af1..9c3d3b3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; +import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.SyncImageGroupDataVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; @@ -54,25 +55,38 @@ @Override protected void revertTask() { - // TODO Auto-generated method stub - + // Undo the replicateStart - use replicateFinish back to the source + VmReplicateDiskParameters migrationStartParams = new VmReplicateDiskParameters + (getEnclosingCommand().getVdsId(), + getEnclosingCommand().getVmId(), + getEnclosingCommand().getStoragePoolId().getValue(), + getEnclosingCommand().getSourceStorageDomainId(), + getEnclosingCommand().getSourceStorageDomainId(), + getEnclosingCommand().getImageGroupId(), + getEnclosingCommand().getImageGroupId() + ); + ResourceManager.getInstance().runVdsCommand(VDSCommandType.VmReplicateDiskFinish, migrationStartParams); } @Override protected VDSCommandType getRevertVDSCommandType() { - // TODO Auto-generated method stub - return null; + return VDSCommandType.DeleteImageGroup; } @Override public AsyncTaskType getRevertTaskType() { - return null; + return AsyncTaskType.deleteImage; } @Override protected VDSParametersBase getRevertVDSParameters() { - // TODO Auto-generated method stub - return null; + return new DeleteImageGroupVDSCommandParameters( + getEnclosingCommand().getStoragePoolId().getValue(), + getEnclosingCommand().getTargetStorageDomainId(), + getEnclosingCommand().getImageGroupId(), + getEnclosingCommand().getParameters().getPostZero(), + getEnclosingCommand().getParameters().getForceDelete(), + getEnclosingCommand().getStoragePool().getcompatibility_version().getValue()); } @Override -- To view, visit http://gerrit.ovirt.org/8749 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia331e1259e7aad2282692099980291c61cafb86e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Allon Mureinik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
