浏览代码

AMBARI-8299. Download Client Configs for YARN return error 500 (aonishuk)

Andrew Onishuk 10 年之前
父节点
当前提交
2f639afe72

+ 8 - 0
ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java

@@ -237,6 +237,8 @@ public class Configuration {
   public static final String DEFAULT_SCHEDULER_START_DELAY_SECONDS = "120";
   public static final String SERVER_TMP_DIR_KEY = "server.tmp.dir";
   public static final String SERVER_TMP_DIR_DEFAULT = "/var/lib/ambari-server/tmp";
+  public static final String EXTERNAL_SCRIPT_TIMEOUT_KEY = "server.script.timeout";
+  public static final String EXTERNAL_SCRIPT_TIMEOUT_DEFAULT = "5000";
   /**
    * This key defines whether stages of parallel requests are executed in
    * parallel or sequentally. Only stages from different requests
@@ -389,6 +391,8 @@ public class Configuration {
             PARALLEL_STAGE_EXECUTION_KEY, PARALLEL_STAGE_EXECUTION_DEFAULT));
     configsMap.put(SERVER_TMP_DIR_KEY, properties.getProperty(
             SERVER_TMP_DIR_KEY, SERVER_TMP_DIR_DEFAULT));
+    configsMap.put(EXTERNAL_SCRIPT_TIMEOUT_KEY, properties.getProperty(
+            EXTERNAL_SCRIPT_TIMEOUT_KEY, EXTERNAL_SCRIPT_TIMEOUT_DEFAULT));
 
     configsMap.put(SHARED_RESOURCES_DIR_KEY, properties.getProperty(
        SHARED_RESOURCES_DIR_KEY, SHARED_RESOURCES_DIR_DEFAULT));
@@ -1057,6 +1061,10 @@ public class Configuration {
     return Integer.parseInt(delay);
   }
 
+  public Integer getExternalScriptTimeout() {
+    return Integer.parseInt(properties.getProperty(EXTERNAL_SCRIPT_TIMEOUT_KEY, EXTERNAL_SCRIPT_TIMEOUT_DEFAULT));
+  }
+
   public boolean getParallelStageExecution() {
     return "true".equalsIgnoreCase(configsMap.get(PARALLEL_STAGE_EXECUTION_KEY));
   }

+ 1 - 1
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java

@@ -320,7 +320,7 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
               packageFolderAbsolute + " " + TMP_PATH + File.separator + "structured-out.json" + " INFO " + TMP_PATH;
 
       try {
-        executeCommand(cmd, SCRIPT_TIMEOUT);
+        executeCommand(cmd, configs.getExternalScriptTimeout());
       } catch (TimeoutException e) {
         LOG.error("Generate client configs script was killed due to timeout ", e);
         throw new SystemException("Generate client configs script was killed due to timeout ", e);

+ 1 - 0
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java

@@ -224,6 +224,7 @@ public class ClientConfigResourceProviderTest {
     expect(clusterConfig.getType()).andReturn(Configuration.HIVE_CONFIG_TAG).anyTimes();
     expect(configHelper.getEffectiveConfigAttributes(cluster, configTags)).andReturn(attributes);
     expect(configuration.getProperty("server.tmp.dir")).andReturn(Configuration.SERVER_TMP_DIR_DEFAULT);
+    expect(configuration.getExternalScriptTimeout()).andReturn(Integer.parseInt(Configuration.EXTERNAL_SCRIPT_TIMEOUT_DEFAULT));
     Map<String,String> props = new HashMap<String, String>();
     props.put(Configuration.HIVE_METASTORE_PASSWORD_PROPERTY, "pass");
     props.put("key","value");