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

Reply via email to