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.