Maor Lipchuk has uploaded a new change for review. Change subject: core: Add a lock when detaching Storage from Data Center ......................................................................
core: Add a lock when detaching Storage from Data Center Add a lock in the Storage Domain when detaching a Storage Domain from Data Center. Bug-Url: https://bugzilla.redhat.com/1144845 Change-Id: I42c6be592ad6d71579ce0aa20926856cbca23d44 Signed-off-by: Maor Lipchuk <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java 3 files changed, 16 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/33461/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java index cfa6bc7..9bd20d9 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java @@ -1,5 +1,6 @@ package org.ovirt.engine.core.bll.storage; +import org.ovirt.engine.core.bll.LockMessagesMatchUtil; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; @@ -9,6 +10,8 @@ import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId; 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.DetachStorageDomainVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.IrsBaseVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; @@ -17,6 +20,9 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; + +import java.util.Collections; +import java.util.Map; @NonTransactiveCommandAttribute(forceCompensation=true) public class DetachStorageDomainFromPoolCommand<T extends DetachStorageDomainFromPoolParameters> extends @@ -30,6 +36,12 @@ super(parameters, commandContext); } + @Override + protected Map<String, Pair<String, String>> getExclusiveLocks() { + return Collections.singletonMap(getParameters().getStorageDomainId().toString(), + LockMessagesMatchUtil.makeLockingPair(LockingGroup.STORAGE, + VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED)); + } /** * Constructor for command creation when compensation is applied on startup diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java index e2b5103..c943159 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStorageDomainCommand.java @@ -172,7 +172,7 @@ return getBackend() .runInternalAction(VdcActionType.DetachStorageDomainFromPool, - params).getSucceeded(); + params, cloneContext().withoutCompensationContext().withoutExecutionContext()).getSucceeded(); } protected boolean formatStorage(StorageDomain dom, VDS vds) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java index b6da994..5e7ba24 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java @@ -276,7 +276,9 @@ // Compensation context is not passed, as we do not want to compensate in case of failure // in detach of one of storage domains if (!Backend.getInstance() - .runInternalAction(VdcActionType.DetachStorageDomainFromPool, tempVar) + .runInternalAction(VdcActionType.DetachStorageDomainFromPool, + tempVar, + cloneContext().withoutCompensationContext().withoutExecutionContext()) .getSucceeded()) { return false; } -- To view, visit http://gerrit.ovirt.org/33461 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I42c6be592ad6d71579ce0aa20926856cbca23d44 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Maor Lipchuk <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
