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

Reply via email to