diff --git a/go.mod b/go.mod index 9fb155763b..05ea1fb9d8 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/containerd/go-runc v1.0.0 github.com/containerd/log v0.1.0 github.com/containerd/typeurl v1.0.2 - github.com/coreos/go-systemd/v22 v22.5.0 + github.com/coreos/go-systemd/v22 v22.6.0 github.com/godbus/dbus/v5 v5.1.0 github.com/gofrs/flock v0.8.0 github.com/gogo/protobuf v1.3.2 diff --git a/go.sum b/go.sum index 2ef7198fab..459010df85 100644 --- a/go.sum +++ b/go.sum @@ -234,6 +234,8 @@ github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= diff --git a/runsc/cgroup/systemd.go b/runsc/cgroup/systemd.go index f2eecd6d7f..223edd36af 100644 --- a/runsc/cgroup/systemd.go +++ b/runsc/cgroup/systemd.go @@ -182,6 +182,9 @@ func (c *cgroupSystemd) Join() (func(), error) { return nil, fmt.Errorf("unknown job completion status %q", s) } } else if unitAlreadyExists(err) { + if err := c.dbusConn.AttachProcessesToUnit(timedCtx, unitName, "" /* subcgroup */, []uint32{uint32(os.Getpid())}); err != nil { + return nil, fmt.Errorf("error joining systemd unit `%s`: %w", unitName, err) + } return clean.Release(), nil } else { return nil, fmt.Errorf("systemd error: %v", err)