Repository: ambari Updated Branches: refs/heads/branch-2.1 63ee3926f -> 9349595d2
AMBARI-12233. Custom actions do not allow max time out higher than 10 minutes (smohanty) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9349595d Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9349595d Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9349595d Branch: refs/heads/branch-2.1 Commit: 9349595d2f579d91ecd2dc9476464874e95e5488 Parents: 63ee392 Author: Sumit Mohanty <smoha...@hortonworks.com> Authored: Wed Jul 1 12:36:35 2015 -0700 Committer: Sumit Mohanty <smoha...@hortonworks.com> Committed: Wed Jul 1 13:04:19 2015 -0700 ---------------------------------------------------------------------- .../server/controller/AmbariActionExecutionHelper.java | 10 +++++++++- .../server/customactions/ActionDefinitionManager.java | 2 +- .../server/controller/AmbariManagementControllerTest.java | 6 ++++-- 3 files changed, 14 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/9349595d/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java index 1e1001c..ee8fd32 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java @@ -38,6 +38,7 @@ import org.apache.ambari.server.actionmanager.Stage; import org.apache.ambari.server.actionmanager.TargetHostType; import org.apache.ambari.server.agent.ExecutionCommand; import org.apache.ambari.server.api.services.AmbariMetaInfo; +import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.internal.RequestResourceFilter; import org.apache.ambari.server.customactions.ActionDefinition; import org.apache.ambari.server.state.Cluster; @@ -75,6 +76,8 @@ public class AmbariActionExecutionHelper { private MaintenanceStateHelper maintenanceStateHelper; @Inject private ConfigHelper configHelper; + @Inject + private Configuration configs; /** * Validates the request to execute an action. @@ -349,7 +352,12 @@ public class AmbariActionExecutionHelper { } Map<String, String> commandParams = new TreeMap<String, String>(); - commandParams.put(COMMAND_TIMEOUT, actionContext.getTimeout().toString()); + int maxTaskTimeout = Integer.parseInt(configs.getDefaultAgentTaskTimeout(false)); + if(maxTaskTimeout < actionContext.getTimeout()) { + commandParams.put(COMMAND_TIMEOUT, Integer.toString(maxTaskTimeout)); + } else { + commandParams.put(COMMAND_TIMEOUT, actionContext.getTimeout().toString()); + } commandParams.put(SCRIPT, actionName + ".py"); commandParams.put(SCRIPT_TYPE, TYPE_PYTHON); http://git-wip-us.apache.org/repos/asf/ambari/blob/9349595d/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java b/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java index e058ce7..97aa8a0 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/customactions/ActionDefinitionManager.java @@ -43,7 +43,7 @@ public class ActionDefinitionManager { .getLogger(ActionDefinitionManager.class); private static final Map<Class<?>, JAXBContext> _jaxbContexts = new HashMap<Class<?>, JAXBContext>(); - private static final Short MAX_TIMEOUT = 600; + private static final Short MAX_TIMEOUT = Short.MAX_VALUE-1; static { try { http://git-wip-us.apache.org/repos/asf/ambari/blob/9349595d/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java index 5ee2016..46dbb8e 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java @@ -4161,7 +4161,7 @@ public class AmbariManagementControllerTest { controller.getAmbariMetaInfo().addActionDefinition(new ActionDefinition( "a2", ActionType.SYSTEM, "", "HDFS", "DATANODE", "Does file exist", - TargetHostType.ALL, Short.valueOf("100"))); + TargetHostType.ALL, Short.valueOf("1000"))); Map<String, String> params = new HashMap<String, String>() {{ put("test", "test"); @@ -4200,6 +4200,7 @@ public class AmbariManagementControllerTest { Assert.assertEquals("HDFS", cmd.getServiceName()); Assert.assertEquals("DATANODE", cmd.getComponentName()); Assert.assertNotNull(hostParametersStage.get("jdk_location")); + Assert.assertEquals("100", cmd.getCommandParams().get("command_timeout")); Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY), response.getRequestContext()); resourceFilters.clear(); @@ -6388,7 +6389,7 @@ public class AmbariManagementControllerTest { controller.getAmbariMetaInfo().addActionDefinition(new ActionDefinition( "a1", ActionType.SYSTEM, "", "HDFS", "", "Some custom action.", - TargetHostType.ALL, Short.valueOf("100"))); + TargetHostType.ALL, Short.valueOf("10010"))); Map<String, String> params = new HashMap<String, String>() {{ put("test", "test"); @@ -6432,6 +6433,7 @@ public class AmbariManagementControllerTest { Assert.assertNotNull(nnCommand); ExecutionCommand cmd = nnCommand.getExecutionCommandWrapper().getExecutionCommand(); Assert.assertEquals("a1", cmd.getRole()); + Assert.assertEquals("900", cmd.getCommandParams().get("command_timeout")); Type type = new TypeToken<Map<String, String>>(){}.getType(); for (Stage stage : actionDB.getAllStages(response.getRequestId())){ Map<String, String> commandParamsStage = StageUtils.getGson().fromJson(stage.getCommandParamsStage(), type);