package supervisor import ( "time" "github.com/Sirupsen/logrus" "github.com/docker/containerd/runtime" ) type DeleteEvent struct { s *Supervisor } func (h *DeleteEvent) Handle(e *Event) error { if i, ok := h.s.containers[e.ID]; ok { start := time.Now() if err := h.deleteContainer(i.container); err != nil { logrus.WithField("error", err).Error("containerd: deleting container") } if i.copier != nil { if err := i.copier.Close(); err != nil { logrus.WithField("error", err).Error("containerd: close container copier") } } h.s.notifySubscribers(&Event{ Type: ExitEventType, ID: e.ID, Status: e.Status, Pid: e.Pid, }) ContainersCounter.Dec(1) h.s.containerGroup.Done() ContainerDeleteTimer.UpdateSince(start) } return nil } func (h *DeleteEvent) deleteContainer(container runtime.Container) error { delete(h.s.containers, container.ID()) return container.Delete() }