server: ignore runc not exist errors

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
Antonio Murdaca 2017-05-11 12:41:08 +02:00
parent 03da0fe03e
commit e4200d3313
No known key found for this signature in database
GPG key ID: B2BEAD150DE936B9
5 changed files with 9 additions and 6 deletions

View file

@ -486,6 +486,9 @@ func (r *Runtime) UpdateStatus(c *Container) error {
defer c.opLock.Unlock() defer c.opLock.Unlock()
out, err := exec.Command(r.Path(c), "state", c.name).CombinedOutput() out, err := exec.Command(r.Path(c), "state", c.name).CombinedOutput()
if err != nil { if err != nil {
if strings.Contains(string(out), "does not exist") {
return nil
}
return fmt.Errorf("error getting container state for %s: %s: %q", c.name, err, out) return fmt.Errorf("error getting container state for %s: %s: %q", c.name, err, out)
} }
if err := json.NewDecoder(bytes.NewBuffer(out)).Decode(&c.state); err != nil { if err := json.NewDecoder(bytes.NewBuffer(out)).Decode(&c.state); err != nil {

View file

@ -66,9 +66,7 @@ func (s *Server) ListContainers(ctx context.Context, req *pb.ListContainersReque
} }
for _, ctr := range ctrList { for _, ctr := range ctrList {
if err := s.runtime.UpdateStatus(ctr); err != nil { s.runtime.UpdateStatus(ctr)
return nil, err
}
podSandboxID := ctr.Sandbox() podSandboxID := ctr.Sandbox()
cState := s.runtime.ContainerStatus(ctr) cState := s.runtime.ContainerStatus(ctr)

View file

@ -20,6 +20,7 @@ func (s *Server) ContainerStatus(ctx context.Context, req *pb.ContainerStatusReq
// best effort if container is still in runc store... // best effort if container is still in runc store...
s.runtime.UpdateStatus(c) s.runtime.UpdateStatus(c)
s.containerStateToDisk(c)
containerID := c.ID() containerID := c.ID()
image := c.Image() image := c.Image()

View file

@ -59,9 +59,8 @@ func (s *Server) ListPodSandbox(ctx context.Context, req *pb.ListPodSandboxReque
// it's better not to panic // it's better not to panic
continue continue
} }
if err := s.runtime.UpdateStatus(podInfraContainer); err != nil { s.runtime.UpdateStatus(podInfraContainer)
return nil, err
}
cState := s.runtime.ContainerStatus(podInfraContainer) cState := s.runtime.ContainerStatus(podInfraContainer)
created := cState.Created.UnixNano() created := cState.Created.UnixNano()
rStatus := pb.PodSandboxState_SANDBOX_NOTREADY rStatus := pb.PodSandboxState_SANDBOX_NOTREADY

View file

@ -18,6 +18,7 @@ func (s *Server) PodSandboxStatus(ctx context.Context, req *pb.PodSandboxStatusR
podInfraContainer := sb.infraContainer podInfraContainer := sb.infraContainer
// best effort if container is still in runc store... // best effort if container is still in runc store...
s.runtime.UpdateStatus(podInfraContainer) s.runtime.UpdateStatus(podInfraContainer)
s.containerStateToDisk(podInfraContainer)
cState := s.runtime.ContainerStatus(podInfraContainer) cState := s.runtime.ContainerStatus(podInfraContainer)
@ -32,6 +33,7 @@ func (s *Server) PodSandboxStatus(ctx context.Context, req *pb.PodSandboxStatusR
} }
rStatus := pb.PodSandboxState_SANDBOX_NOTREADY rStatus := pb.PodSandboxState_SANDBOX_NOTREADY
if cState.Status == oci.ContainerStateRunning { if cState.Status == oci.ContainerStateRunning {
rStatus = pb.PodSandboxState_SANDBOX_READY rStatus = pb.PodSandboxState_SANDBOX_READY
} }