v2: Fix cgroupPathRegExp to match path after first colon after devices

If in getCgroupPath in cgroups we have some other hierarchies after
"devices" using ".*" sometimes will cause matching wrong string as
a container path so we need negated character class here: "[^:]*".

e.g.
If cgroups string is
"153:name=systemd:/system.slice/docker-f55e7cad1fcc02f992e0c33c210ecdc6d641858a665f28370523c27c05bdde0e.scope,4:freezer,devices,name=container:/system.slice/docker-f55e7cad1fcc02f992e0c33c210ecdc6d641858a665f28370523c27c05bdde0e.scope,3:cpuacct,cpu,cpuset,name=fairsched:/system.slice/docker-f55e7cad1fcc02f992e0c33c210ecdc6d641858a665f28370523c27c05bdde0e.scope,2:memory:/system.slice/docker-f55e7cad1fcc02f992e0c33c210ecdc6d641858a665f28370523c27c05bdde0e.scope,1:blkio,name=beancounter:/system.slice/docker-f55e7cad1fcc02f992e0c33c210ecdc6d641858a665f28370523c27c05bdde0e.scope"

match[1] will be "blkio" but not:
/system.slice/docker-f55e7cad1fcc02f992e0c33c210ecdc6d641858a665f28370523c27c05bdde0e.scope

These fixes the commit:
4cbd91c761 Make getCgroupPath work in case of named or multi- hierarchies

v2: use negated character class, correct the example, remove .* on
either end as they don't do anything in FindSubmatch.
This commit is contained in:
Pavel Tikhomirov 2015-12-10 11:52:00 +03:00 committed by Pavel Tikhomirov
parent 97ad511121
commit 97257ccf61

View File

@ -43,7 +43,7 @@ import (
// Housekeeping interval. // Housekeeping interval.
var HousekeepingInterval = flag.Duration("housekeeping_interval", 1*time.Second, "Interval between container housekeepings") var HousekeepingInterval = flag.Duration("housekeeping_interval", 1*time.Second, "Interval between container housekeepings")
var cgroupPathRegExp = regexp.MustCompile(`.*devices.*:(.*?)[,;$].*`) var cgroupPathRegExp = regexp.MustCompile(`devices[^:]*:(.*?)[,;$]`)
type containerInfo struct { type containerInfo struct {
info.ContainerReference info.ContainerReference