From b4fdf22397911fff2ef97065caeca73f3b41cd08 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 5 Mar 2020 12:20:51 +0530 Subject: [PATCH] kvm: fix/optimize propogating configs (#3911) Make some changes based on @nvazquez 's comments in PR #3491 Fix a bug in #3491 --- .../virtualnetwork/VirtualRoutingResource.java | 7 +++++-- .../src/main/java/com/cloud/agent/AgentManager.java | 4 +++- .../com/cloud/agent/manager/AgentManagerImpl.java | 12 ++++++------ .../kvm/resource/LibvirtComputingResource.java | 4 ++-- .../configuration/ConfigurationManagerImpl.java | 4 +++- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java b/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java index 21372a17f8d..6db8913a79d 100644 --- a/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java +++ b/core/src/main/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java @@ -319,9 +319,12 @@ public class VirtualRoutingResource { } public boolean configureHostParams(final Map params) { - if (_params.get("router.aggregation.command.each.timeout") == null) { + if (_params.get("router.aggregation.command.each.timeout") != null) { String value = (String)params.get("router.aggregation.command.each.timeout"); - _eachTimeout = Duration.standardSeconds(NumbersUtil.parseInt(value, 10)); + _eachTimeout = Duration.standardSeconds(NumbersUtil.parseLong(value, 600)); + if (s_logger.isDebugEnabled()){ + s_logger.debug("The router.aggregation.command.each.timeout in seconds is set to " + _eachTimeout.getStandardSeconds()); + } } return true; diff --git a/engine/components-api/src/main/java/com/cloud/agent/AgentManager.java b/engine/components-api/src/main/java/com/cloud/agent/AgentManager.java index 1d8e5faf9d4..818e0a75e64 100644 --- a/engine/components-api/src/main/java/com/cloud/agent/AgentManager.java +++ b/engine/components-api/src/main/java/com/cloud/agent/AgentManager.java @@ -16,6 +16,8 @@ // under the License. package com.cloud.agent; +import java.util.Map; + import org.apache.cloudstack.framework.config.ConfigKey; import com.cloud.agent.api.Answer; @@ -153,5 +155,5 @@ public interface AgentManager { void notifyMonitorsOfRemovedHost(long hostId, long clusterId); - void propagateChangeToAgents(); + void propagateChangeToAgents(Map params); } diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index 4524f8334f8..2270a51cd7d 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -1822,11 +1822,11 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl } @Override - public void propagateChangeToAgents() { - s_logger.debug("Propagating changes on host parameters to the agents"); - Map> hostsPerZone = getHostsPerZone(); - Map params = new HashMap(); - params.put("router.aggregation.command.each.timeout", _configDao.getValue("router.aggregation.command.each.timeout")); - sendCommandToAgents(hostsPerZone, params); + public void propagateChangeToAgents(Map params) { + if (params != null && ! params.isEmpty()) { + s_logger.debug("Propagating changes on host parameters to the agents"); + Map> hostsPerZone = getHostsPerZone(); + sendCommandToAgents(hostsPerZone, params); + } } } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index ac83c550e94..950dffa6f70 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -1106,8 +1106,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv storage.configure("Storage", new HashMap()); if (params.get("router.aggregation.command.each.timeout") != null) { String value = (String)params.get("router.aggregation.command.each.timeout"); - Integer intValue = NumbersUtil.parseInt(value, 600); - storage.persist("router.aggregation.command.each.timeout", String.valueOf(intValue)); + Long longValue = NumbersUtil.parseLong(value, 600); + storage.persist("router.aggregation.command.each.timeout", String.valueOf(longValue)); } return true; diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index be01b9f8325..8cf2c0626ed 100755 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -483,7 +483,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati globalSettingUpdated.equals(IndirectAgentLBServiceImpl.IndirectAgentLBAlgorithm.key())) { _indirectAgentLB.propagateMSListToAgents(); } else if (globalSettingUpdated.equals(Config.RouterAggregationCommandEachTimeout.toString())) { - _agentManager.propagateChangeToAgents(); + Map params = new HashMap(); + params.put(Config.RouterAggregationCommandEachTimeout.toString(), _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString())); + _agentManager.propagateChangeToAgents(params); } } });