Explorar el Código

YARN-6510. Fix profs stat file warning caused by process names that includes parenthesis. (Wilfred Spiegelenburg via Haibo Chen)

(cherry picked from commit 4f3ca0396a810f54f7fd0489a224c1bb13143aa4)
Haibo Chen hace 8 años
padre
commit
894521673b

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ProcfsBasedProcessTree.java

@@ -58,7 +58,7 @@ public class ProcfsBasedProcessTree extends ResourceCalculatorProcessTree {
   private static final String PROCFS = "/proc/";
 
   private static final Pattern PROCFS_STAT_FILE_FORMAT = Pattern.compile(
-      "^([\\d-]+)\\s\\(([^)]+)\\)\\s[^\\s]\\s([\\d-]+)\\s([\\d-]+)\\s" +
+      "^([\\d-]+)\\s\\((.*)\\)\\s[^\\s]\\s([\\d-]+)\\s([\\d-]+)\\s" +
       "([\\d-]+)\\s([\\d-]+\\s){7}(\\d+)\\s(\\d+)\\s([\\d-]+\\s){7}(\\d+)\\s" +
       "(\\d+)(\\s[\\d-]+){15}");
 

+ 4 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestProcfsBasedProcessTree.java

@@ -423,7 +423,7 @@ public class TestProcfsBasedProcessTree {
           new ProcessStatInfo(new String[]{"200", "process two", "100", "100",
               "100", "200000", "200", "2000", "400"});
       procInfos[2] =
-          new ProcessStatInfo(new String[]{"300", "proc3", "200", "100",
+          new ProcessStatInfo(new String[]{"300", "proc(3)", "200", "100",
               "100", "300000", "300", "3000", "600"});
       procInfos[3] =
           new ProcessStatInfo(new String[]{"400", "proc4", "1", "400", "400",
@@ -566,7 +566,7 @@ public class TestProcfsBasedProcessTree {
           new ProcessStatInfo(new String[]{"200", "process two", "100", "100",
               "100", "200000", "200"});
       procInfos[2] =
-          new ProcessStatInfo(new String[]{"300", "proc3", "1", "300", "300",
+          new ProcessStatInfo(new String[]{"300", "proc(3)", "1", "300", "300",
               "300000", "300"});
       procInfos[3] =
           new ProcessStatInfo(new String[]{"400", "proc4", "100", "100",
@@ -812,7 +812,7 @@ public class TestProcfsBasedProcessTree {
           new ProcessStatInfo(new String[]{"200", "process two", "100", "100",
               "100", "200000", "200", "2000", "400"});
       procInfos[2] =
-          new ProcessStatInfo(new String[]{"300", "proc3", "200", "100",
+          new ProcessStatInfo(new String[]{"300", "proc(3)", "200", "100",
               "100", "300000", "300", "3000", "600"});
       procInfos[3] =
           new ProcessStatInfo(new String[]{"400", "proc4", "200", "100",
@@ -835,7 +835,7 @@ public class TestProcfsBasedProcessTree {
       String[] cmdLines = new String[numProcesses];
       cmdLines[0] = "proc1 arg1 arg2";
       cmdLines[1] = "process two arg3 arg4";
-      cmdLines[2] = "proc3 arg5 arg6";
+      cmdLines[2] = "proc(3) arg5 arg6";
       cmdLines[3] = "proc4 arg7 arg8";
       cmdLines[4] = "proc5 arg9 arg10";
       cmdLines[5] = "proc6 arg11 arg12";