You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2018/05/10 13:47:41 UTC
[ambari] branch trunk updated: AMBARI-23808. Cannot turn off file
cache update for Ambari Agent (aonishuk)
This is an automated email from the ASF dual-hosted git repository.
aonishuk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new cd82331 AMBARI-23808. Cannot turn off file cache update for Ambari Agent (aonishuk)
cd82331 is described below
commit cd82331950dee0a3a8eba8cbdae5abcdfaca2f82
Author: Andrew Onishuk <ao...@hortonworks.com>
AuthorDate: Thu May 10 14:14:35 2018 +0300
AMBARI-23808. Cannot turn off file cache update for Ambari Agent (aonishuk)
---
.../src/main/python/ambari_agent/AmbariConfig.py | 2 +-
.../main/python/ambari_agent/HeartbeatThread.py | 2 +-
.../listeners/MetadataEventListener.py | 8 ++++-
.../server/agent/stomp/dto/MetadataCluster.java | 13 ++++++-
.../ambari/server/configuration/Configuration.java | 19 ++++++----
.../controller/AmbariManagementControllerImpl.java | 42 +++++++++++++++-------
.../ambari/server/events/MetadataUpdateEvent.java | 4 +--
7 files changed, 65 insertions(+), 25 deletions(-)
diff --git a/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py b/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
index d982125..4a5236b 100644
--- a/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
+++ b/ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
@@ -306,7 +306,7 @@ class AmbariConfig:
def get_multiprocess_status_commands_executor_enabled(self):
return bool(int(self.get('agent', 'multiprocess_status_commands_executor_enabled', 1)))
- def update_configuration_from_registration(self, reg_resp):
+ def update_configuration_from_metadata(self, reg_resp):
if reg_resp and AmbariConfig.AMBARI_PROPERTIES_CATEGORY in reg_resp:
if not self.has_section(AmbariConfig.AMBARI_PROPERTIES_CATEGORY):
self.add_section(AmbariConfig.AMBARI_PROPERTIES_CATEGORY)
diff --git a/ambari-agent/src/main/python/ambari_agent/HeartbeatThread.py b/ambari-agent/src/main/python/ambari_agent/HeartbeatThread.py
index 0c04ad2..01bf3c5 100644
--- a/ambari-agent/src/main/python/ambari_agent/HeartbeatThread.py
+++ b/ambari-agent/src/main/python/ambari_agent/HeartbeatThread.py
@@ -60,7 +60,7 @@ class HeartbeatThread(threading.Thread):
# listeners
self.server_responses_listener = initializer_module.server_responses_listener
self.commands_events_listener = CommandsEventListener(initializer_module.action_queue)
- self.metadata_events_listener = MetadataEventListener(initializer_module.metadata_cache)
+ self.metadata_events_listener = MetadataEventListener(initializer_module.metadata_cache, initializer_module.config)
self.topology_events_listener = TopologyEventListener(initializer_module.topology_cache)
self.configuration_events_listener = ConfigurationEventListener(initializer_module.configurations_cache)
self.host_level_params_events_listener = HostLevelParamsEventListener(initializer_module.host_level_params_cache, initializer_module.recovery_manager)
diff --git a/ambari-agent/src/main/python/ambari_agent/listeners/MetadataEventListener.py b/ambari-agent/src/main/python/ambari_agent/listeners/MetadataEventListener.py
index f31820e..3dd7177 100644
--- a/ambari-agent/src/main/python/ambari_agent/listeners/MetadataEventListener.py
+++ b/ambari-agent/src/main/python/ambari_agent/listeners/MetadataEventListener.py
@@ -32,8 +32,9 @@ class MetadataEventListener(EventListener):
"""
Listener of Constants.METADATA_TOPIC events from server.
"""
- def __init__(self, metadata_cache):
+ def __init__(self, metadata_cache, config):
self.metadata_cache = metadata_cache
+ self.config = config
def on_event(self, headers, message):
"""
@@ -48,5 +49,10 @@ class MetadataEventListener(EventListener):
self.metadata_cache.cache_update(message['clusters'], message['hash'])
+ try:
+ self.config.update_configuration_from_metadata(message['clusters']['-1']['agentConfigs'])
+ except KeyError:
+ pass
+
def get_handled_path(self):
return Constants.METADATA_TOPIC
\ No newline at end of file
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/dto/MetadataCluster.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/dto/MetadataCluster.java
index 5620209..249d2a2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/dto/MetadataCluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/dto/MetadataCluster.java
@@ -35,8 +35,10 @@ public class MetadataCluster {
private SortedMap<String, MetadataServiceInfo> serviceLevelParams = new TreeMap<>();
private SortedMap<String, String> clusterLevelParams = new TreeMap<>();
+ private SortedMap<String, SortedMap<String,String>> agentConfigs = new TreeMap<>();
+
public MetadataCluster(SecurityType securityType, SortedMap<String,MetadataServiceInfo> serviceLevelParams,
- SortedMap<String, String> clusterLevelParams) {
+ SortedMap<String, String> clusterLevelParams, SortedMap<String, SortedMap<String,String>> agentConfigs) {
if (securityType != null) {
this.statusCommandsToRun.add("STATUS");
if (SecurityType.KERBEROS.equals(securityType)) {
@@ -45,6 +47,7 @@ public class MetadataCluster {
}
this.serviceLevelParams = serviceLevelParams;
this.clusterLevelParams = clusterLevelParams;
+ this.agentConfigs = agentConfigs;
}
public Set<String> getStatusCommandsToRun() {
@@ -63,6 +66,14 @@ public class MetadataCluster {
this.clusterLevelParams = clusterLevelParams;
}
+ public SortedMap<String, SortedMap<String, String>> getAgentConfigs() {
+ return agentConfigs;
+ }
+
+ public void setAgentConfigs(SortedMap<String, SortedMap<String, String>> agentConfigs) {
+ this.agentConfigs = agentConfigs;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 73b6ba1..dd99b97 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -154,6 +154,8 @@ public class Configuration {
*/
private static final String HTML_BREAK_TAG = "<br/>";
+ private static final String AGENT_CONFIGS_DEFAULT_SECTION = "agentConfig";
+
/**
* Used to determine which repository validation strings should be used
* depending on the OS.
@@ -2554,7 +2556,7 @@ public class Configuration {
private String ambariUpgradeConfigUpdatesFilePath;
private JsonObject hostChangesJson;
private Map<String, String> configsMap;
- private Map<String, String> agentConfigsMap;
+ private Map<String, Map<String,String>> agentConfigsMap;
private Properties customDbProperties = null;
private Properties customPersistenceProperties = null;
private Long configLastModifiedDateForCustomJDBC = 0L;
@@ -2707,13 +2709,16 @@ public class Configuration {
this.properties = properties;
agentConfigsMap = new HashMap<>();
- agentConfigsMap.put(CHECK_REMOTE_MOUNTS.getKey(), getProperty(CHECK_REMOTE_MOUNTS));
- agentConfigsMap.put(CHECK_MOUNTS_TIMEOUT.getKey(), getProperty(CHECK_MOUNTS_TIMEOUT));
- agentConfigsMap.put(ENABLE_AUTO_AGENT_CACHE_UPDATE.getKey(), getProperty(ENABLE_AUTO_AGENT_CACHE_UPDATE));
- agentConfigsMap.put(JAVA_HOME.getKey(), getProperty(JAVA_HOME));
+ agentConfigsMap.put(AGENT_CONFIGS_DEFAULT_SECTION, new HashMap<String, String>());
+
+ Map<String,String> defaultAgentConfigsMap = agentConfigsMap.get(AGENT_CONFIGS_DEFAULT_SECTION);
+ defaultAgentConfigsMap.put(CHECK_REMOTE_MOUNTS.getKey(), getProperty(CHECK_REMOTE_MOUNTS));
+ defaultAgentConfigsMap.put(CHECK_MOUNTS_TIMEOUT.getKey(), getProperty(CHECK_MOUNTS_TIMEOUT));
+ defaultAgentConfigsMap.put(ENABLE_AUTO_AGENT_CACHE_UPDATE.getKey(), getProperty(ENABLE_AUTO_AGENT_CACHE_UPDATE));
+ defaultAgentConfigsMap.put(JAVA_HOME.getKey(), getProperty(JAVA_HOME));
configsMap = new HashMap<>();
- configsMap.putAll(agentConfigsMap);
+ configsMap.putAll(defaultAgentConfigsMap);
configsMap.put(AMBARI_PYTHON_WRAP.getKey(), getProperty(AMBARI_PYTHON_WRAP));
configsMap.put(SRVR_AGENT_HOSTNAME_VALIDATE.getKey(), getProperty(SRVR_AGENT_HOSTNAME_VALIDATE));
configsMap.put(SRVR_TWO_WAY_SSL.getKey(), getProperty(SRVR_TWO_WAY_SSL));
@@ -3394,7 +3399,7 @@ public class Configuration {
* Keys - public constants of this class
* @return the map with server config parameters related to agent configuration
*/
- public Map<String, String> getAgentConfigsMap() {
+ public Map<String, Map<String,String>> getAgentConfigsMap() {
return agentConfigsMap;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 26b2545..ffd9b12 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -76,6 +76,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.SortedMap;
import java.util.TreeMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -5588,12 +5589,13 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
MetadataCluster metadataCluster = new MetadataCluster(securityType,
getMetadataServiceLevelParams(cl),
- getMetadataClusterLevelParams(cl, stackId));
+ getMetadataClusterLevelParams(cl, stackId),
+ null);
metadataClusters.put(Long.toString(cl.getClusterId()), metadataCluster);
}
MetadataUpdateEvent metadataUpdateEvent = new MetadataUpdateEvent(metadataClusters,
- getMetadataAmbariLevelParams());
+ getMetadataAmbariLevelParams(), getMetadataAgentConfigs());
return metadataUpdateEvent;
}
@@ -5605,11 +5607,12 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
MetadataCluster metadataCluster = new MetadataCluster(securityType,
getMetadataServiceLevelParams(cl),
- getMetadataClusterLevelParams(cl, stackId));
+ getMetadataClusterLevelParams(cl, stackId),
+ null);
metadataClusters.put(Long.toString(cl.getClusterId()), metadataCluster);
MetadataUpdateEvent metadataUpdateEvent = new MetadataUpdateEvent(metadataClusters,
- null);
+ null, getMetadataAgentConfigs());
return metadataUpdateEvent;
}
@@ -5620,11 +5623,12 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
MetadataCluster metadataCluster = new MetadataCluster(null,
new TreeMap<>(),
- getMetadataClusterLevelConfigsParams(cl, stackId));
+ getMetadataClusterLevelConfigsParams(cl, stackId),
+ null);
metadataClusters.put(Long.toString(cl.getClusterId()), metadataCluster);
MetadataUpdateEvent metadataUpdateEvent = new MetadataUpdateEvent(metadataClusters,
- null);
+ null, getMetadataAgentConfigs());
return metadataUpdateEvent;
}
@@ -5633,11 +5637,12 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
MetadataCluster metadataCluster = new MetadataCluster(null,
getMetadataServiceLevelParams(cl),
- new TreeMap<>());
+ new TreeMap<>(),
+ null);
metadataClusters.put(Long.toString(cl.getClusterId()), metadataCluster);
MetadataUpdateEvent metadataUpdateEvent = new MetadataUpdateEvent(metadataClusters,
- null);
+ null, getMetadataAgentConfigs());
return metadataUpdateEvent;
}
@@ -5646,11 +5651,12 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
MetadataCluster metadataCluster = new MetadataCluster(null,
getMetadataServiceLevelParams(cl.getService(serviceName)),
- new TreeMap<>());
+ new TreeMap<>(),
+ null);
metadataClusters.put(Long.toString(cl.getClusterId()), metadataCluster);
MetadataUpdateEvent metadataUpdateEvent = new MetadataUpdateEvent(metadataClusters,
- null);
+ null, getMetadataAgentConfigs());
return metadataUpdateEvent;
}
@@ -5659,11 +5665,12 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
MetadataCluster metadataCluster = new MetadataCluster(null,
getMetadataServiceLevelParams(cl.getService(serviceName)),
- new TreeMap<>());
+ new TreeMap<>(),
+ null);
metadataClusters.put(Long.toString(cl.getClusterId()), metadataCluster);
MetadataUpdateEvent metadataUpdateEvent = new MetadataUpdateEvent(metadataClusters,
- null);
+ null, getMetadataAgentConfigs());
return metadataUpdateEvent;
}
@@ -5914,6 +5921,17 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
return clusterLevelParams;
}
+ public SortedMap<String, SortedMap<String,String>> getMetadataAgentConfigs() {
+ SortedMap<String, SortedMap<String,String>> agentConfigs = new TreeMap<>();
+ Map<String, Map<String,String>> agentConfigsMap = configs.getAgentConfigsMap();
+
+ for (String key : agentConfigsMap.keySet()) {
+ agentConfigs.put(key, new TreeMap<String, String>(agentConfigsMap.get(key)));
+ }
+
+ return agentConfigs;
+ }
+
@Override
public HostRepositories retrieveHostRepositories(Cluster cluster, Host host) throws AmbariException {
List<ServiceComponentHost> hostComponents = cluster.getServiceComponentHosts(host.getHostName());
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/MetadataUpdateEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/events/MetadataUpdateEvent.java
index 96d1589..e706919 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/MetadataUpdateEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/MetadataUpdateEvent.java
@@ -54,11 +54,11 @@ public class MetadataUpdateEvent extends STOMPEvent implements Hashable {
metadataClusters = null;
}
- public MetadataUpdateEvent(SortedMap<String, MetadataCluster> metadataClusters, SortedMap<String, String> ambariLevelParams) {
+ public MetadataUpdateEvent(SortedMap<String, MetadataCluster> metadataClusters, SortedMap<String, String> ambariLevelParams, SortedMap<String, SortedMap<String, String>> metadataAgentConfigs) {
super(Type.METADATA);
this.metadataClusters = metadataClusters;
if (ambariLevelParams != null) {
- this.metadataClusters.put(AMBARI_LEVEL_CLUSTER_ID, new MetadataCluster(null, new TreeMap<>(), ambariLevelParams));
+ this.metadataClusters.put(AMBARI_LEVEL_CLUSTER_ID, new MetadataCluster(null, new TreeMap<>(), ambariLevelParams, metadataAgentConfigs));
}
}
--
To stop receiving notification emails like this one, please contact
aonishuk@apache.org.