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