ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rnettle...@apache.org
Subject ambari git commit: AMBARI-11866. Blueprints processor should enable command retry by default. (rnettleton)
Date Thu, 11 Jun 2015 21:42:14 GMT
Repository: ambari
Updated Branches:
  refs/heads/trunk d6900c1b2 -> dc25acbc9


AMBARI-11866. Blueprints processor should enable command retry by default. (rnettleton)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dc25acbc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dc25acbc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dc25acbc

Branch: refs/heads/trunk
Commit: dc25acbc953d0c6895e7fd6fee69618108fcbb8d
Parents: d6900c1
Author: Bob Nettleton <rnettleton@hortonworks.com>
Authored: Thu Jun 11 17:41:19 2015 -0400
Committer: Bob Nettleton <rnettleton@hortonworks.com>
Committed: Thu Jun 11 17:41:46 2015 -0400

----------------------------------------------------------------------
 .../BlueprintConfigurationProcessor.java        | 43 ++++++++++++++
 .../BlueprintConfigurationProcessorTest.java    | 62 ++++++++++++++++++++
 2 files changed, 105 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/dc25acbc/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
index 4f747f2..af14529 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
@@ -50,6 +50,20 @@ public class BlueprintConfigurationProcessor {
 
   protected final static Logger LOG = LoggerFactory.getLogger(BlueprintConfigurationProcessor.class);
 
+  private final static String COMMAND_RETRY_ENABLED_PROPERTY_NAME = "command_retry_enabled";
+
+  private final static String COMMANDS_TO_RETRY_PROPERTY_NAME = "commands_to_retry";
+
+  private final static String COMMAND_RETRY_MAX_TIME_IN_SEC_PROPERTY_NAME = "command_retry_max_time_in_sec";
+
+  private final static String COMMAND_RETRY_ENABLED_DEFAULT = "true";
+
+  private final static String COMMANDS_TO_RETRY_DEFAULT = "INSTALL,START";
+
+  private final static String COMMAND_RETRY_MAX_TIME_IN_SEC_DEFAULT = "600";
+
+  private final static String CLUSTER_ENV_CONFIG_TYPE_NAME = "cluster-env";
+
   /**
    * Single host topology updaters
    */
@@ -2002,6 +2016,8 @@ public class BlueprintConfigurationProcessor {
     // AMBARI-5206
     final Map<String , String> userProps = new HashMap<String , String>();
 
+    setRetryConfiguration(configuration);
+
     Collection<String> services = clusterTopology.getBlueprint().getServices();
     // only add user properties to the map for
     // services actually included in the blueprint definition
@@ -2044,6 +2060,33 @@ public class BlueprintConfigurationProcessor {
   }
 
   /**
+   * This method ensures that Ambari command retry is enabled if not explicitly overridden
in
+   * cluster-env by the Blueprint or Cluster Creation template.  The new dynamic provisioning
model
+   * requires that retry be enabled for most multi-node clusters, to this method sets reasonable
defaults
+   * in order to preserve backwards compatibility and to simplify Blueprint creation.
+   *
+   * If the retry-specific properties in cluster-env are not set, then the config processor
+   * will set these values to defaults in cluster-env.
+   *
+   * @param configuration cluster configuration
+   */
+  private static void setRetryConfiguration(Configuration configuration) {
+
+    if (configuration.getPropertyValue(CLUSTER_ENV_CONFIG_TYPE_NAME, COMMAND_RETRY_ENABLED_PROPERTY_NAME)
== null) {
+      configuration.setProperty(CLUSTER_ENV_CONFIG_TYPE_NAME, COMMAND_RETRY_ENABLED_PROPERTY_NAME,
COMMAND_RETRY_ENABLED_DEFAULT);
+    }
+
+    if (configuration.getPropertyValue(CLUSTER_ENV_CONFIG_TYPE_NAME, COMMANDS_TO_RETRY_PROPERTY_NAME)
== null) {
+      configuration.setProperty(CLUSTER_ENV_CONFIG_TYPE_NAME, COMMANDS_TO_RETRY_PROPERTY_NAME,
COMMANDS_TO_RETRY_DEFAULT);
+    }
+
+    if (configuration.getPropertyValue(CLUSTER_ENV_CONFIG_TYPE_NAME, COMMAND_RETRY_MAX_TIME_IN_SEC_PROPERTY_NAME)
== null) {
+      configuration.setProperty(CLUSTER_ENV_CONFIG_TYPE_NAME, COMMAND_RETRY_MAX_TIME_IN_SEC_PROPERTY_NAME,
COMMAND_RETRY_MAX_TIME_IN_SEC_DEFAULT);
+    }
+  }
+
+
+  /**
    * Ensure that the specified property exists.
    * If not, set a default value.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/dc25acbc/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
index 9b1e786..fc6ec4b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
@@ -2077,6 +2077,68 @@ public class BlueprintConfigurationProcessorTest {
   }
 
   @Test
+  public void testDoUpdateForClusterVerifyRetrySettingsDefault() throws Exception {
+    Map<String, Map<String, String>> configProperties =
+      new HashMap<String, Map<String, String>>();
+
+    HashMap<String, String> clusterEnvProperties = new HashMap<String, String>();
+    configProperties.put("cluster-env", clusterEnvProperties);
+
+    Configuration clusterConfig = new Configuration(configProperties, Collections.<String,
Map<String, Map<String, String>>>emptyMap());
+
+    TestHostGroup testHostGroup = new TestHostGroup("test-host-group-one", Collections.<String>emptySet(),
Collections.<String>emptySet());
+    ClusterTopology topology = createClusterTopology(bp, clusterConfig, Collections.singleton(testHostGroup));
+
+    BlueprintConfigurationProcessor updater = new BlueprintConfigurationProcessor(topology);
+
+    updater.doUpdateForClusterCreate();
+
+    // after update, verify that the retry properties for commands and installs are set as
expected
+    assertEquals("Incorrect number of properties added to cluster-env for retry",
+      3, clusterEnvProperties.size());
+    assertEquals("command_retry_enabled was not set to the expected default",
+      "true", clusterEnvProperties.get("command_retry_enabled"));
+    assertEquals("commands_to_retry was not set to the expected default",
+      "INSTALL,START", clusterEnvProperties.get("commands_to_retry"));
+    assertEquals("command_retry_max_time_in_sec was not set to the expected default",
+      "600", clusterEnvProperties.get("command_retry_max_time_in_sec"));
+  }
+
+  @Test
+  public void testDoUpdateForClusterVerifyRetrySettingsCustomized() throws Exception {
+    Map<String, Map<String, String>> configProperties =
+      new HashMap<String, Map<String, String>>();
+
+    HashMap<String, String> clusterEnvProperties = new HashMap<String, String>();
+    configProperties.put("cluster-env", clusterEnvProperties);
+
+    clusterEnvProperties.put("command_retry_enabled", "false");
+    clusterEnvProperties.put("commands_to_retry", "TEST");
+    clusterEnvProperties.put("command_retry_max_time_in_sec", "1");
+
+
+    Configuration clusterConfig = new Configuration(configProperties, Collections.<String,
Map<String, Map<String, String>>>emptyMap());
+
+    TestHostGroup testHostGroup = new TestHostGroup("test-host-group-one", Collections.<String>emptySet(),
Collections.<String>emptySet());
+    ClusterTopology topology = createClusterTopology(bp, clusterConfig, Collections.singleton(testHostGroup));
+
+    BlueprintConfigurationProcessor updater = new BlueprintConfigurationProcessor(topology);
+
+    updater.doUpdateForClusterCreate();
+
+    // after update, verify that the retry properties for commands and installs are set as
expected
+    // in this case, the customer-provided overrides should be honored, rather than the retry
defaults
+    assertEquals("Incorrect number of properties added to cluster-env for retry",
+      3, clusterEnvProperties.size());
+    assertEquals("command_retry_enabled was not set to the expected default",
+      "false", clusterEnvProperties.get("command_retry_enabled"));
+    assertEquals("commands_to_retry was not set to the expected default",
+      "TEST", clusterEnvProperties.get("commands_to_retry"));
+    assertEquals("command_retry_max_time_in_sec was not set to the expected default",
+      "1", clusterEnvProperties.get("command_retry_max_time_in_sec"));
+  }
+
+  @Test
   public void testDoUpdateForClusterWithNameNodeHAEnabledSpecifyingHostNamesDirectly() throws
Exception {
     final String expectedNameService = "mynameservice";
     final String expectedHostName = "c6401.apache.ambari.org";


Mime
View raw message