Liron Ar has uploaded a new change for review. Change subject: core: initVdsOnUp - eliminate unneeded reconstructs. ......................................................................
core: initVdsOnUp - eliminate unneeded reconstructs. host that runs through init vds on up should attemp to reconstruct in case of: 1. wrong master version 2. master not found and the domain is inactive/unknown. Change-Id: I6418b9d2826146e1e4ceff4341c6d7cd3a0024af Signed-off-by: Liron Aravot <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java 1 file changed, 7 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/13709/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java index f1f2172..ea49fa6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java @@ -18,6 +18,8 @@ import org.ovirt.engine.core.common.businessentities.FenceActionType; import org.ovirt.engine.core.common.businessentities.FenceStatusReturnValue; import org.ovirt.engine.core.common.businessentities.NonOperationalReason; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; @@ -175,19 +177,22 @@ EventResult result = new EventResult(true, EventType.VDSCONNECTTOPOOL); storage_pool storagePool = getStoragePoolDAO().get(storagePoolId); Guid masterDomainIdFromDb = getStorageDomainDAO().getMasterStorageDomainIdForPool(storagePoolId); + //Those 2 queries will be merged into one query. + StorageDomain masterDomain = getStorageDomainDAO().getForStoragePool(masterDomainIdFromDb, storagePoolId); try { runVdsCommand(VDSCommandType.ConnectStoragePool, new ConnectStoragePoolVDSCommandParameters(vds.getId(), storagePoolId, vds.getVdsSpmId(), masterDomainIdFromDb, storagePool.getmaster_domain_version())).getSucceeded(); } catch (VdcBLLException e) { + boolean isMasterPossiblyUnreachable = e.getErrorCode() == VdcBllErrors.StoragePoolMasterNotFound && masterDomain.getStatus() == StorageDomainStatus.InActive || masterDomain.getStatus() == StorageDomainStatus.Unknown; if (e.getErrorCode() == VdcBllErrors.StoragePoolWrongMaster - || e.getErrorCode() == VdcBllErrors.StoragePoolMasterNotFound) { + || (isMasterPossiblyUnreachable)) { boolean returnValue = Backend.getInstance() .runInternalAction(VdcActionType.ReconstructMasterDomain, new ReconstructMasterParameters(vds.getStoragePoolId(), - masterDomainIdFromDb, vds.getId(), true)).getSucceeded(); + masterDomainIdFromDb, vds.getId(), true)).getSucceeded() || isMasterPossiblyUnreachable; result = new EventResult(returnValue, EventType.RECONSTRUCT); } else { log.errorFormat("Could not connect host {0} to pool {1}", vds.getName(), storagePool -- To view, visit http://gerrit.ovirt.org/13709 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6418b9d2826146e1e4ceff4341c6d7cd3a0024af Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Ar <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
