From f93ba744038d79211a48105bd691e26e1770cc61 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 14 Apr 2022 02:32:09 -0400 Subject: [PATCH] 18992: Fix abrupt exit on cgroup test failure. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- lib/crunchrun/cgroup.go | 11 +++++------ lib/crunchrun/cgroup_test.go | 6 ++++-- lib/crunchrun/crunchrun.go | 6 +++++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/crunchrun/cgroup.go b/lib/crunchrun/cgroup.go index 0b254f5bd7..48ec93b876 100644 --- a/lib/crunchrun/cgroup.go +++ b/lib/crunchrun/cgroup.go @@ -6,16 +6,16 @@ package crunchrun import ( "bytes" + "fmt" "io/ioutil" - "log" ) // Return the current process's cgroup for the given subsystem. -func findCgroup(subsystem string) string { +func findCgroup(subsystem string) (string, error) { subsys := []byte(subsystem) cgroups, err := ioutil.ReadFile("/proc/self/cgroup") if err != nil { - log.Fatal(err) + return "", err } for _, line := range bytes.Split(cgroups, []byte("\n")) { toks := bytes.SplitN(line, []byte(":"), 4) @@ -24,10 +24,9 @@ func findCgroup(subsystem string) string { } for _, s := range bytes.Split(toks[1], []byte(",")) { if bytes.Compare(s, subsys) == 0 { - return string(toks[2]) + return string(toks[2]), nil } } } - log.Fatalf("subsystem %q not found in /proc/self/cgroup", subsystem) - return "" + return "", fmt.Errorf("subsystem %q not found in /proc/self/cgroup", subsystem) } diff --git a/lib/crunchrun/cgroup_test.go b/lib/crunchrun/cgroup_test.go index b43479a3b4..eb87456d14 100644 --- a/lib/crunchrun/cgroup_test.go +++ b/lib/crunchrun/cgroup_test.go @@ -14,8 +14,10 @@ var _ = Suite(&CgroupSuite{}) func (s *CgroupSuite) TestFindCgroup(c *C) { for _, s := range []string{"devices", "cpu", "cpuset"} { - g := findCgroup(s) - c.Check(g, Not(Equals), "") + g, err := findCgroup(s) + if c.Check(err, IsNil) { + c.Check(g, Not(Equals), "", Commentf("subsys %q", s)) + } c.Logf("cgroup(%q) == %q", s, g) } } diff --git a/lib/crunchrun/crunchrun.go b/lib/crunchrun/crunchrun.go index 84b153554a..219ed3b98d 100644 --- a/lib/crunchrun/crunchrun.go +++ b/lib/crunchrun/crunchrun.go @@ -1926,7 +1926,11 @@ func (command) RunCommand(prog string, args []string, stdin io.Reader, stdout, s cr.enableNetwork = *enableNetwork cr.networkMode = *networkMode if *cgroupParentSubsystem != "" { - p := findCgroup(*cgroupParentSubsystem) + p, err := findCgroup(*cgroupParentSubsystem) + if err != nil { + log.Printf("fatal: cgroup parent subsystem: %s", err) + return 1 + } cr.setCgroupParent = p cr.expectCgroupParent = p } -- 2.30.2