Michael Kublin has uploaded a new change for review.

Change subject: core: Removing reschedule of monitoring of vdsm by another vdsm
......................................................................

core: Removing reschedule of monitoring of vdsm by another vdsm

The following patch will remove a reschedule of monitoring of vdsm, from
other thread of monitoring.
Such behaviour can cause to spending all quartz thread on reschedule of 
monitoring of the
same vdsm.
The use case:
1. We have 10 vdsms and 10 vms that are migrating to same vdsm
2. Each vdsm can schedule additional refresh of destination vdsm
3. Result : we has 10 quartz jobs that are trying to monitor the same vdsm and 
additional job
   which is regular monitoring (runs each 2 seconds)
It is obvious that under load and in more big environment we will have a 
timeouts when all
quartz threads will be busy by monitoring of the same vdsms

Change-Id: I5534b3b627e992efbce152935ad207c978a7feed
Signed-off-by: Michael Kublin <mkub...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
2 files changed, 4 insertions(+), 37 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/8483/1

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 dc295f0..c9bf37a 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
@@ -52,10 +52,6 @@
 
     private static Log log = LogFactory.getLog(VdsManager.class);
 
-    protected VDS getVds() {
-        return _vds;
-    }
-
     protected void setVds(VDS value) {
         _vds = value;
     }
@@ -231,9 +227,9 @@
                         mUnrespondedAttempts.set(0);
                         setLastUpdate();
                     }
-                    if (!getInitialized() && getVds().getstatus() != 
VDSStatus.NonResponsive
-                            && getVds().getstatus() != 
VDSStatus.PendingApproval) {
-                        log.info("Initializing Host: " + 
getVds().getvds_name());
+                    if (!getInitialized() && _vds.getstatus() != 
VDSStatus.NonResponsive
+                            && _vds.getstatus() != VDSStatus.PendingApproval) {
+                        log.infoFormat("Initializing Host: {0}",  
_vds.getvds_name());
                         
ResourceManager.getInstance().HandleVdsFinishedInit(_vds.getId());
                         setInitialized(true);
                     }
@@ -511,12 +507,6 @@
             log.infoFormat("Vds {0} moved to Error mode after {1} attemts. 
Time: {2}", vds.getvds_name(),
                     mFailedToRunVmAttempts, new java.util.Date());
         }
-    }
-
-    public void forceRefreshRunTimeInfo() {
-        // TODO should be solved with a thread pool
-        SchedulerUtilQuartzImpl.getInstance().scheduleAOneTimeJob(this, 
"OnTimer", new Class[0], new Object[0], 0,
-                TimeUnit.MILLISECONDS);
     }
 
     /**
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
index 9324e31..3ec8b55 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
@@ -98,7 +98,6 @@
     private boolean _saveVdsDynamic;
     private VDSStatus _firstStatus = VDSStatus.forValue(0);
     private boolean _saveVdsStatistics;
-    private List<Guid> _vdssToRefresh;
     private VdsManager _vdsManager;
     private MonitoringStrategy monitoringStrategy;
     private VDS _vds;
@@ -839,12 +838,6 @@
             // setVmStatusDownForVmNotFound();
 
             refreshCommitedMemory();
-            if (_vdssToRefresh != null) {
-                for (Guid vdsToRefreshId : _vdssToRefresh) {
-                    VdsManager vdsm = 
ResourceManager.getInstance().GetVdsManager(vdsToRefreshId);
-                    vdsm.forceRefreshRunTimeInfo();
-                }
-            }
             // Handle VM devices were changed (for 3.1 cluster and above)
             if 
(!VmDeviceCommonUtils.isOldClusterVersion(_vds.getvds_group_compatibility_version()))
 {
                 handleVmDeviceChange();
@@ -1196,11 +1189,7 @@
         AuditLogableBase logable = new AuditLogableBase(_vds.getId(), 
curVm.getId());
         switch (curVm.getstatus()) {
         case MigratingFrom: {
-            if (vmDynamic == null || vmDynamic.getExitStatus() == 
VmExitStatus.Normal) {
-                // type = AuditLogType.VM_MIGRATION_DONE;
-                migratingFromTreatment(curVm);
-            } else {
-                if (curVm.getmigrating_to_vds() != null) {
+                if (vmDynamic != null && vmDynamic.getExitStatus() != 
VmExitStatus.Normal && curVm.getmigrating_to_vds() != null) {
                     DestroyVmVDSCommand<DestroyVmVDSCommandParameters> 
destroyCmd =
                             new 
DestroyVmVDSCommand<DestroyVmVDSCommandParameters>
                             (new DestroyVmVDSCommandParameters(new 
Guid(curVm.getmigrating_to_vds().toString()),
@@ -1228,7 +1217,6 @@
                 
ResourceManager.getInstance().RemoveAsyncRunningVm(vmDynamic.getId());
             }
             break;
-        }
         case PoweredDown: {
             logable.AddCustomValue("VmStatus", "PoweredDown");
             type = AuditLogType.VM_DOWN;
@@ -1239,17 +1227,6 @@
         }
         if (type != AuditLogType.UNASSIGNED) {
             auditLog(logable, type);
-        }
-    }
-
-    private void migratingFromTreatment(VM curVm) {
-        if (curVm.getmigrating_to_vds() != null) {
-            if (_vdssToRefresh == null) {
-                _vdssToRefresh = new ArrayList<Guid>();
-            }
-            if (!_vdssToRefresh.contains(curVm.getmigrating_to_vds())) {
-                _vdssToRefresh.add(new 
Guid(curVm.getmigrating_to_vds().toString()));
-            }
         }
     }
 


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

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

Reply via email to