Martin Peřina has uploaded a new change for review.

Change subject: core: Make VdsManager.lastUpdate publically accessible
......................................................................

core: Make VdsManager.lastUpdate publically accessible

Add public VdsManager.getLastUpdate() method to prevent passing
lastUpdate value through VdsEventListener to VdsNotRespondingTreatment.

Change-Id: Ie40f0aea7e5d968cfe919c1921684a2eb26176d1
Bug-Url: https://bugzilla.redhat.com/1182510
Signed-off-by: Martin Perina <mper...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
5 files changed, 34 insertions(+), 32 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/36967/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
index c7289bd..302fbd0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
@@ -234,7 +234,7 @@
     }
 
     @Override
-    public void vdsNotResponding(final VDS vds, final long lastUpdate) {
+    public void vdsNotResponding(final VDS vds) {
         ExecutionHandler.updateSpecificActionJobCompleted(vds.getId(), 
VdcActionType.MaintenanceVds, false);
         ThreadPoolUtil.execute(new Runnable() {
             @Override
@@ -246,7 +246,6 @@
                 FenceVdsActionParameters params = new FenceVdsActionParameters(
                         vds.getId(),
                         FenceActionType.Restart);
-                params.setLastUpdate(lastUpdate);
                 
Backend.getInstance().runInternalAction(VdcActionType.VdsNotRespondingTreatment,
                         params,
                         ExecutionHandler.createInternalJobContext());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
index 6227c87..0c66451 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
@@ -32,6 +32,7 @@
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 import org.ovirt.engine.core.utils.linq.Predicate;
 import org.ovirt.engine.core.vdsbroker.MonitoringStrategyFactory;
+import org.ovirt.engine.core.vdsbroker.ResourceManager;
 
 /**
  * @see RestartVdsCommand on why this command is requiring a lock
@@ -147,18 +148,7 @@
             ).getFencingPolicy();
             getParameters().setFencingPolicy(fencingPolicy);
 
-            if (fencingPolicy.isSkipFencingIfSDActive()) {
-                // host storage lease should be renewed each 
ConfigValues.HostStorageLeaseAliveInterval
-                // so we need to be sure not to execute fencing before host is 
non responsive for longer time
-                long interval = TimeUnit.SECONDS.toMillis(
-                        
Config.<Integer>getValue(ConfigValues.HostStorageLeaseAliveCheckingInterval));
-                long difference = System.currentTimeMillis() - 
getParameters().getLastUpdate();
-                if (difference < interval) {
-                    int sleepMs = (int)(interval - difference);
-                    log.info("Sleeping {} ms before proceeding with fence 
execution", sleepMs);
-                    ThreadUtils.sleep(sleepMs);
-                }
-            }
+            
waitUntilSkipFencingIfSDActiveAllowed(fencingPolicy.isSkipFencingIfSDActive());
 
             // Make sure that the StopVdsCommand that runs by the RestartVds
             // don't write over our job, and disrupt marking the job status 
correctly
@@ -252,4 +242,25 @@
         auditLogable.setRepeatable(true);
         AuditLogDirector.log(auditLogable, 
AuditLogType.VDS_ALERT_FENCE_OPERATION_SKIPPED_BROKEN_CONNECTIVITY);
     }
+
+    public ResourceManager getResourceManager() {
+        // TODO: fix when ResourceManager could be injected
+        return ResourceManager.getInstance();
+    }
+
+    private void waitUntilSkipFencingIfSDActiveAllowed(boolean 
skipFencingIfSDActive) {
+        if (skipFencingIfSDActive) {
+            // host storage lease should be renewed each 
ConfigValues.HostStorageLeaseAliveInterval
+            // so we need to be sure not to execute fencing before host is non 
responsive for longer time
+            long interval = TimeUnit.SECONDS.toMillis(
+                    
Config.<Integer>getValue(ConfigValues.HostStorageLeaseAliveCheckingInterval));
+            long lastUpdate = 
getResourceManager().GetVdsManager(getVdsId()).getLastUpdate();
+            long difference = System.currentTimeMillis() - lastUpdate;
+            if (difference < interval) {
+                int sleepMs = (int)(interval - difference);
+                log.info("Sleeping {} ms before proceeding with fence 
execution", sleepMs);
+                ThreadUtils.sleep(sleepMs);
+            }
+        }
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
index 9aa24fb..e0a5e2e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
@@ -20,11 +20,6 @@
 
     private FencingPolicy fencingPolicy;
 
-    /**
-     * Number milliseconds since last successful connection to host in 
monitoring
-     */
-    private long lastUpdate;
-
     public FenceVdsActionParameters() {
         this(null, FenceActionType.Restart);
     }
@@ -66,13 +61,4 @@
     public void setFencingPolicy(FencingPolicy fencingPolicy) {
         this.fencingPolicy = fencingPolicy;
     }
-
-    public long getLastUpdate() {
-        return lastUpdate;
-    }
-
-    public void setLastUpdate(long lastUpdate) {
-        this.lastUpdate = lastUpdate;
-    }
-
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
index 81ed161..a41944e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/IVdsEventListener.java
@@ -11,7 +11,7 @@
 import org.ovirt.engine.core.compat.TransactionScopeOption;
 
 public interface IVdsEventListener {
-    void vdsNotResponding(VDS vds, long lastUpdate); // BLL
+    void vdsNotResponding(VDS vds); // BLL
 
     void vdsNonOperational(Guid vdsId, NonOperationalReason type, boolean 
logCommand, Guid domainId); // BLL
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
index 47da440..9f5126d 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
@@ -701,9 +701,7 @@
                         setStatus(VDSStatus.NonResponsive, cachedVds);
                         moveVMsToUnknown();
                         logHostFailToResponde(ex, timeoutToFence);
-                        
ResourceManager.getInstance().getEventListener().vdsNotResponding(
-                                cachedVds,
-                                lastUpdate);
+                        
ResourceManager.getInstance().getEventListener().vdsNotResponding(cachedVds);
                     } else {
                         setStatus(VDSStatus.NonResponsive, cachedVds);
                     }
@@ -807,6 +805,14 @@
     private void setStartTime() {
         updateStartTime = System.currentTimeMillis();
     }
+
+    /**
+     * Return time of last successful host monitoring communication
+     */
+    public long getLastUpdate() {
+        return lastUpdate;
+    }
+
     private void setLastUpdate() {
         lastUpdate = System.currentTimeMillis();
     }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie40f0aea7e5d968cfe919c1921684a2eb26176d1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Peřina <mper...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to