Liron Aravot has uploaded a new change for review.

Change subject: core: avoid having SD active on vdsm and not in engine
......................................................................

core: avoid having SD active on vdsm and not in engine

When running RecoveryStoragePool command which triggers reconstruct engine 
shouldn't use compensation on the newly
added domain in case the reconstruct succeeded on vdsm side even if we
have a failure afterwards.

Change-Id: Ida51b027b8078555ffab5b80d2ffe54572fa6cca
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=845838
Signed-off-by: Liron Aravot <lara...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java
1 file changed, 18 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/8390/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java
index f33a770..e6af189 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RecoveryStoragePoolCommand.java
@@ -82,29 +82,35 @@
 
     @Override
     protected void executeCommand() {
+        storage_pool_iso_map domainPoolMap =
         TransactionSupport.executeInNewTransaction(
-                new TransactionMethod<Object>() {
+                new TransactionMethod<storage_pool_iso_map>() {
                     @Override
-                    public Object runInTransaction() {
+                    public storage_pool_iso_map runInTransaction() {
                         storage_pool_iso_map domainPoolMap =
                                 new 
storage_pool_iso_map(getRecoveryStoragePoolParametersData()
                                         .getNewMasterDomainId(),
                                         
getRecoveryStoragePoolParametersData().getStoragePoolId(),
                                         StorageDomainStatus.Active);
                         
DbFacade.getInstance().getStoragePoolIsoMapDao().save(domainPoolMap);
-                        
getCompensationContext().snapshotNewEntity(domainPoolMap);
-                        getCompensationContext().stateChanged();
-                        return null;
+                        return domainPoolMap;
                     }
                 });
         getStoragePool().setstatus(StoragePoolStatus.Problematic);
-        if 
(StorageHelperDirector.getInstance().getItem(getStorageDomain().getstorage_type())
-                .ConnectStorageToDomainByVdsId(getNewMaster(false), 
getVds().getId())) {
-            super.executeCommand();
-        } else {
-            getReturnValue().setFault(new VdcFault(new 
VdcBLLException(VdcBllErrors.StorageServerConnectionError,
-                    "Failed to connect storage"),
-                    VdcBllErrors.StorageServerConnectionError));
+        try {
+            if 
(StorageHelperDirector.getInstance().getItem(getStorageDomain().getstorage_type())
+                    .ConnectStorageToDomainByVdsId(getNewMaster(false), 
getVds().getId())) {
+                super.executeCommand();
+            } else {
+                getReturnValue().setFault(new VdcFault(new 
VdcBLLException(VdcBllErrors.StorageServerConnectionError,
+                        "Failed to connect storage"),
+                        VdcBllErrors.StorageServerConnectionError));
+            }
+        } finally {
+            if (!reconstructOpsSucceeded) {
+                getCompensationContext().snapshotNewEntity(domainPoolMap);
+                getCompensationContext().stateChanged();
+            }
         }
     }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ida51b027b8078555ffab5b80d2ffe54572fa6cca
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liron Aravot <lara...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to