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