stats.go 539 B

12345678910111213141516171819202122232425262728293031323334
  1. package supervisor
  2. import (
  3. "time"
  4. "github.com/docker/containerd/runtime"
  5. )
  6. type StatsTask struct {
  7. baseTask
  8. ID string
  9. Stat chan *runtime.Stat
  10. }
  11. func (s *Supervisor) stats(t *StatsTask) error {
  12. start := time.Now()
  13. i, ok := s.containers[t.ID]
  14. if !ok {
  15. return ErrContainerNotFound
  16. }
  17. // TODO: use workers for this
  18. go func() {
  19. s, err := i.container.Stats()
  20. if err != nil {
  21. t.ErrorCh() <- err
  22. return
  23. }
  24. t.ErrorCh() <- nil
  25. t.Stat <- s
  26. ContainerStatsTimer.UpdateSince(start)
  27. }()
  28. return errDeferredResponse
  29. }