YARN-9010. Fix the incorrect trailing slash deletion in constructor method of CGroupsHandlerImpl. (Zhankun Tang via wangda)
Change-Id: Iaecc66d57781cc10f19ead4647e47fc9556676da Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/bad12031 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/bad12031 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/bad12031 Branch: refs/heads/HDFS-12943 Commit: bad12031f603347a701249a1e3ef5d879a5f1c8f Parents: 0081b02 Author: Wangda Tan <wan...@apache.org> Authored: Thu Nov 29 14:56:07 2018 -0800 Committer: Wangda Tan <wan...@apache.org> Committed: Thu Nov 29 14:56:07 2018 -0800 ---------------------------------------------------------------------- .../linux/resources/CGroupsHandlerImpl.java | 3 +- .../linux/resources/TestCGroupsHandlerImpl.java | 38 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/bad12031/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsHandlerImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsHandlerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsHandlerImpl.java index 050d0a8..1b2c780 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsHandlerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsHandlerImpl.java @@ -87,9 +87,10 @@ class CGroupsHandlerImpl implements CGroupsHandler { CGroupsHandlerImpl(Configuration conf, PrivilegedOperationExecutor privilegedOperationExecutor, String mtab) throws ResourceHandlerException { + // Remove leading and trialing slash(es) this.cGroupPrefix = conf.get(YarnConfiguration. NM_LINUX_CONTAINER_CGROUPS_HIERARCHY, "/hadoop-yarn") - .replaceAll("^/", "").replaceAll("$/", ""); + .replaceAll("^/+", "").replaceAll("/+$", ""); this.enableCGroupMount = conf.getBoolean(YarnConfiguration. NM_LINUX_CONTAINER_CGROUPS_MOUNT, false); this.cGroupMountPath = conf.get(YarnConfiguration. http://git-wip-us.apache.org/repos/asf/hadoop/blob/bad12031/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/TestCGroupsHandlerImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/TestCGroupsHandlerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/TestCGroupsHandlerImpl.java index ea6fb52..70badaf 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/TestCGroupsHandlerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/TestCGroupsHandlerImpl.java @@ -598,4 +598,42 @@ public class TestCGroupsHandlerImpl { FileUtils.deleteQuietly(cpu); } } + + // Remove leading and trailing slashes + @Test + public void testCgroupsHierarchySetting() throws ResourceHandlerException { + YarnConfiguration conf = new YarnConfiguration(); + conf.set(YarnConfiguration.NM_LINUX_CONTAINER_CGROUPS_MOUNT_PATH, tmpPath); + conf.set(YarnConfiguration.NM_LINUX_CONTAINER_CGROUPS_HIERARCHY, + "/hadoop-yarn"); + CGroupsHandlerImpl cGroupsHandler = new CGroupsHandlerImpl(conf, null); + String expectedRelativePath = "hadoop-yarn/c1"; + Assert.assertEquals(expectedRelativePath, + cGroupsHandler.getRelativePathForCGroup("c1")); + + conf.set(YarnConfiguration.NM_LINUX_CONTAINER_CGROUPS_HIERARCHY, + "hadoop-yarn"); + cGroupsHandler = new CGroupsHandlerImpl(conf, null); + Assert.assertEquals(expectedRelativePath, + cGroupsHandler.getRelativePathForCGroup("c1")); + + conf.set(YarnConfiguration.NM_LINUX_CONTAINER_CGROUPS_HIERARCHY, + "hadoop-yarn/"); + cGroupsHandler = new CGroupsHandlerImpl(conf, null); + Assert.assertEquals(expectedRelativePath, + cGroupsHandler.getRelativePathForCGroup("c1")); + + conf.set(YarnConfiguration.NM_LINUX_CONTAINER_CGROUPS_HIERARCHY, + "//hadoop-yarn//"); + cGroupsHandler = new CGroupsHandlerImpl(conf, null); + Assert.assertEquals(expectedRelativePath, + cGroupsHandler.getRelativePathForCGroup("c1")); + + expectedRelativePath = "hadoop-yarn/root/c1"; + conf.set(YarnConfiguration.NM_LINUX_CONTAINER_CGROUPS_HIERARCHY, + "//hadoop-yarn/root//"); + cGroupsHandler = new CGroupsHandlerImpl(conf, null); + Assert.assertEquals(expectedRelativePath, + cGroupsHandler.getRelativePathForCGroup("c1")); + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org