From 77e5f6553cae6d99cbb7d11d9e8aeb48de199d9e Mon Sep 17 00:00:00 2001 From: Stephen J Day Date: Fri, 6 Oct 2017 15:48:06 -0700 Subject: [PATCH] metrics/cgroups: handle error on call to cgroup Signed-off-by: Stephen J Day --- metrics/cgroups/cgroups.go | 9 ++++++++- metrics/cgroups/metrics.go | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/metrics/cgroups/cgroups.go b/metrics/cgroups/cgroups.go index 46cce4241..137eb33df 100644 --- a/metrics/cgroups/cgroups.go +++ b/metrics/cgroups/cgroups.go @@ -75,7 +75,14 @@ func (m *cgroupsMonitor) Monitor(c runtime.Task) error { func (m *cgroupsMonitor) Stop(c runtime.Task) error { info := c.Info() t := c.(*linux.Task) - m.collector.collect(info.ID, info.Namespace, t.Cgroup(), m.collector.storedMetrics, false, nil) + + cgroup, err := t.Cgroup() + if err != nil { + log.G(m.context).WithError(err).Warnf("unable to retrieve cgroup on stop") + } else { + m.collector.collect(info.ID, info.Namespace, cgroup, m.collector.storedMetrics, false, nil) + } + m.collector.Remove(info.ID, info.Namespace) return nil } diff --git a/metrics/cgroups/metrics.go b/metrics/cgroups/metrics.go index f5a29b86a..92ba8a886 100644 --- a/metrics/cgroups/metrics.go +++ b/metrics/cgroups/metrics.go @@ -8,9 +8,9 @@ import ( "sync" "github.com/containerd/cgroups" + "github.com/containerd/containerd/log" metrics "github.com/docker/go-metrics" "github.com/prometheus/client_golang/prometheus" - "github.com/sirupsen/logrus" ) var ( @@ -97,9 +97,10 @@ func (c *collector) collect(id, namespace string, cg cgroups.Cgroup, ch chan<- p if wg != nil { defer wg.Done() } + stats, err := cg.Stat(cgroups.IgnoreNotExist) if err != nil { - logrus.WithError(err).Errorf("stat cgroup %s", id) + log.L.WithError(err).Errorf("stat cgroup %s", id) return } for _, m := range c.metrics {