Avoid allocating slice for finding Process
@@ -503,23 +503,20 @@ func (s *Service) processExits() {
}
}
-func (s *Service) allProcesses() []process.Process {
+func (s *Service) checkProcesses(e runc.Exit) {
+ var p process.Process
s.mu.Lock()
- defer s.mu.Unlock()
-
- res := make([]process.Process, 0, len(s.processes))
- for _, p := range s.processes {
- res = append(res, p)
+ for _, proc := range s.processes {
+ if proc.Pid() == e.Pid {
+ p = proc
+ break
}
- return res
}
-
-func (s *Service) checkProcesses(e runc.Exit) {
- for _, p := range s.allProcesses() {
- if p.Pid() != e.Pid {
- continue
+ s.mu.Unlock()
+ if p == nil {
+ log.G(s.context).Infof("process with id:%d wasn't found", e.Pid)
+ return
}
-
if ip, ok := p.(*process.Init); ok {
// Ensure all children are killed
if shouldKillAllOnExit(s.context, s.bundle) {
@@ -538,8 +535,6 @@ func (s *Service) checkProcesses(e runc.Exit) {
ExitStatus: uint32(e.Status),
ExitedAt: p.ExitedAt(),
}
- return
- }
}
func shouldKillAllOnExit(ctx context.Context, bundlePath string) bool {
