Fix control group pattern

The file /proc/self/cgroup lists the control groups to which the process
belongs. This file is a colon separated list of three fields:
 1. a hierarchy ID number
 2. a comma-separated list of hierarchies
 3. the pathname of the control group in the hierarchy

The regex pattern for this contains a bug for the second field. It
allows one or two entries in the comma-separated list, but not
more. This commit fixes the pattern to allow one or more entires in the
comma-separated list.

Relates #23219
This commit is contained in:
Jason Tedor 2017-02-16 15:31:18 -05:00 committed by GitHub
parent 788c64848b
commit 00a8b8799f
2 changed files with 5 additions and 6 deletions

View File

@ -188,7 +188,7 @@ public class OsProbe {
}
// pattern for lines in /proc/self/cgroup
private static final Pattern CONTROL_GROUP_PATTERN = Pattern.compile("\\d+:([^:,]+(?:,[^:,]+)?):(/.*)");
private static final Pattern CONTROL_GROUP_PATTERN = Pattern.compile("\\d+:([^:]+):(/.*)");
// this property is to support a hack to workaround an issue with Docker containers mounting the cgroups hierarchy inconsistently with
// respect to /proc/self/cgroup; for Docker containers this should be set to "/"

View File

@ -155,16 +155,15 @@ public class OsProbeTests extends ESTestCase {
@Override
List<String> readProcSelfCgroup() {
return Arrays.asList(
"11:freezer:/",
"10:net_cls,net_prio:/",
"9:pids:/",
"8:cpuset:/",
"10:freezer:/",
"9:net_cls,net_prio:/",
"8:pids:/",
"7:blkio:/",
"6:memory:/",
"5:devices:/user.slice",
"4:hugetlb:/",
"3:perf_event:/",
"2:cpu,cpuacct:/" + hierarchy,
"2:cpu,cpuacct,cpuset:/" + hierarchy,
"1:name=systemd:/user.slice/user-1000.slice/session-2359.scope");
}