From 0705375dd93886520271bb523eb983c128387673 Mon Sep 17 00:00:00 2001 From: Mrunal Patel Date: Tue, 12 Jun 2018 09:58:16 -0700 Subject: [PATCH] cgroups: Backport of upstream fixes around starting units opencontainers/runc#1683 opencontainers/runc#1754 opencontainers/runc#1772 opencontainers/runc#1781 Signed-off-by: Mrunal Patel --- libcontainer/cgroups/systemd/apply_systemd.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libcontainer/cgroups/systemd/apply_systemd.go b/libcontainer/cgroups/systemd/apply_systemd.go index fc4da81b4..86c78d76a 100644 --- a/libcontainer/cgroups/systemd/apply_systemd.go +++ b/libcontainer/cgroups/systemd/apply_systemd.go @@ -10,7 +10,9 @@ import ( "path/filepath" "strings" "sync" + "time" + "github.com/Sirupsen/logrus" systemdDbus "github.com/coreos/go-systemd/dbus" systemdUtil "github.com/coreos/go-systemd/util" "github.com/godbus/dbus" @@ -176,11 +178,16 @@ func (m *Manager) Apply(pid int) error { return err } - statusChan := make(chan string) - if _, err := theConn.StartTransientUnit(unitName, "replace", properties, statusChan); err != nil && !isUnitExists(err) { + statusChan := make(chan string, 1) + if _, err := theConn.StartTransientUnit(unitName, "replace", properties, statusChan); err == nil { + select { + case <-statusChan: + case <-time.After(time.Second): + logrus.Warnf("Timed out while waiting for StartTransientUnit(%s) completion signal from dbus. Continuing...", unitName) + } + } else if !isUnitExists(err) { return err } - <-statusChan if err := joinCgroups(c, pid); err != nil { return err