From e1def6c52595d94717741c3aed5d5ef8540715a8 Mon Sep 17 00:00:00 2001 From: "tanu.ajmera" Date: Thu, 20 Feb 2020 15:24:07 +0530 Subject: [PATCH] YARN-9593. Support Comma in value of global update config --- .../apache/hadoop/yarn/client/cli/SchedConfCLI.java | 4 +++- .../hadoop/yarn/client/cli/TestSchedConfCLI.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java index 2f2b601f208..36f9e483791 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java @@ -79,6 +79,7 @@ private static final String GET_SCHEDULER_CONF = "getConf"; private static final String FORMAT_CONF = "formatConfig"; private static final String HELP_CMD = "help"; + private static final String GLOBAL_UPDATE_REGEX = "(? globalUpdates = new HashMap<>(); - for (String globalUpdate : args.split(",")) { + for (String globalUpdate : args.split(GLOBAL_UPDATE_REGEX)) { + globalUpdate=globalUpdate.replace("\\",""); putKeyValuePair(globalUpdates, globalUpdate); } updateInfo.setGlobalParams(globalUpdates); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java index 3b961df61dc..bdce651b688 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java @@ -363,4 +363,17 @@ public void testGlobalUpdate() { assertEquals("schedVal1", globalInfo.get("schedKey1")); assertEquals("schedVal2", globalInfo.get("schedKey2")); } + + @Test(timeout = 10000) + public void testGlobalUpdateWithCommaInValue() { + SchedConfUpdateInfo schedUpdateInfo = new SchedConfUpdateInfo(); + cli.globalUpdates( + "schedKey1=schedVal1.1\\,schedVal1.2 schedVal1.3,schedKey2=schedVal2", + schedUpdateInfo); + Map globalInfo = schedUpdateInfo.getGlobalParams(); + assertEquals(2,globalInfo.size()); + assertEquals("schedVal1.1,schedVal1.2 schedVal1.3", + globalInfo.get("schedKey1")); + assertEquals("schedVal2", globalInfo.get("schedKey2")); + } } -- 2.25.0