Daniel Erez has uploaded a new change for review. Change subject: core: extract SnapshotsEngineLock to BaseImagesCommand ......................................................................
core: extract SnapshotsEngineLock to BaseImagesCommand Extracted SnapshotsEngineLock from RemoveImageCommand into BaseImagesCommand for reusability in other derivative commands. Change-Id: Idc4b46a2c53a0ec6ac13c1dba73089ae4512bea7 Signed-off-by: Daniel Erez <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java 2 files changed, 23 insertions(+), 17 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/25/26325/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java index 3c235f4..faad1fb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java @@ -2,6 +2,7 @@ import java.util.Date; import java.util.List; +import java.util.Map; import org.apache.commons.lang.NotImplementedException; import org.ovirt.engine.core.bll.context.CompensationContext; @@ -13,8 +14,12 @@ import org.ovirt.engine.core.common.businessentities.DiskImageDynamic; import org.ovirt.engine.core.common.businessentities.ImageStatus; import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType; +import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.image_storage_domain_map; import org.ovirt.engine.core.common.errors.VdcBLLException; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.locks.LockingGroup; +import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.common.vdscommands.GetImageInfoVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; @@ -24,6 +29,7 @@ import org.ovirt.engine.core.dao.DiskImageDynamicDAO; import org.ovirt.engine.core.dao.ImageDao; import org.ovirt.engine.core.dao.SnapshotDao; +import org.ovirt.engine.core.utils.lock.EngineLock; /** * Base class for all image handling commands @@ -143,6 +149,12 @@ protected void setImageGroupId(Guid value) { _imageGroupId = value; + } + + private EngineLock snapshotsEngineLock; + + protected EngineLock getSnapshotsEngineLock() { + return snapshotsEngineLock; } /** @@ -386,4 +398,13 @@ .save(image_storage_domain_map); return image_storage_domain_map; } + + protected void lockVmSnapshotsWithWait(VM vm) { + snapshotsEngineLock = new EngineLock(); + Map<String, Pair<String, String>> snapshotsExlusiveLockMap = + Collections.singletonMap(vm.getId().toString(), + LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM_SNAPSHOTS, VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED)); + snapshotsEngineLock.setExclusiveLocks(snapshotsExlusiveLockMap); + getLockManager().acquireLockWait(snapshotsEngineLock); + } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java index 26683af..6bc67d2 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java @@ -5,7 +5,6 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import java.util.Map; import org.ovirt.engine.core.bll.utils.ClusterUtils; import org.ovirt.engine.core.common.VdcObjectType; @@ -21,9 +20,6 @@ import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllErrors; -import org.ovirt.engine.core.common.errors.VdcBllMessages; -import org.ovirt.engine.core.common.locks.LockingGroup; -import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.GetImagesListVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; @@ -31,7 +27,6 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.TransactionScopeOption; import org.ovirt.engine.core.dao.VmDeviceDAO; -import org.ovirt.engine.core.utils.lock.EngineLock; import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.ovf.OvfReaderException; import org.ovirt.engine.core.utils.transaction.TransactionMethod; @@ -43,7 +38,6 @@ @InternalCommandAttribute @NonTransactiveCommandAttribute(forceCompensation=true) public class RemoveImageCommand<T extends RemoveImageParameters> extends BaseImagesCommand<T> { - private EngineLock snapshotsEngineLock; public RemoveImageCommand(T parameters) { super(parameters); @@ -190,19 +184,10 @@ } }); } finally { - if (snapshotsEngineLock != null) { - getLockManager().releaseLock(snapshotsEngineLock); + if (getSnapshotsEngineLock() != null) { + getLockManager().releaseLock(getSnapshotsEngineLock()); } } - } - - private void lockVmSnapshotsWithWait(VM vm) { - snapshotsEngineLock = new EngineLock(); - Map<String, Pair<String, String>> snapshotsExlusiveLockMap = - Collections.singletonMap(vm.getId().toString(), - LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM_SNAPSHOTS, VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED)); - snapshotsEngineLock.setExclusiveLocks(snapshotsExlusiveLockMap); - getLockManager().acquireLockWait(snapshotsEngineLock); } /** -- To view, visit http://gerrit.ovirt.org/26325 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idc4b46a2c53a0ec6ac13c1dba73089ae4512bea7 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
