Merge pull request #544 from runcom/fix-panics

[e2e fix] server: add nil checks to not panic
This commit is contained in:
Mrunal Patel 2017-05-29 12:20:22 -07:00 committed by GitHub
commit fa8d5c035a
3 changed files with 14 additions and 2 deletions

View file

@ -29,8 +29,11 @@ func (s *Server) Exec(ctx context.Context, req *pb.ExecRequest) (*pb.ExecRespons
// Exec endpoint for streaming.Runtime // Exec endpoint for streaming.Runtime
func (ss streamService) Exec(containerID string, cmd []string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan term.Size) error { func (ss streamService) Exec(containerID string, cmd []string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan term.Size) error {
fmt.Println(containerID, cmd, stdin, stdout, stderr, tty, resize) c := ss.runtimeServer.GetContainer(containerID)
c := ss.runtimeServer.state.containers.Get(containerID)
if c == nil {
return fmt.Errorf("could not find container %q", containerID)
}
if err := ss.runtimeServer.runtime.UpdateStatus(c); err != nil { if err := ss.runtimeServer.runtime.UpdateStatus(c); err != nil {
return err return err

View file

@ -29,6 +29,10 @@ func (s *Server) PortForward(ctx context.Context, req *pb.PortForwardRequest) (*
func (ss streamService) PortForward(podSandboxID string, port int32, stream io.ReadWriteCloser) error { func (ss streamService) PortForward(podSandboxID string, port int32, stream io.ReadWriteCloser) error {
c := ss.runtimeServer.GetSandboxContainer(podSandboxID) c := ss.runtimeServer.GetSandboxContainer(podSandboxID)
if c == nil {
return fmt.Errorf("could not find container for sandbox %q", podSandboxID)
}
if err := ss.runtimeServer.runtime.UpdateStatus(c); err != nil { if err := ss.runtimeServer.runtime.UpdateStatus(c); err != nil {
return err return err
} }

View file

@ -678,6 +678,11 @@ func (s *Server) GetSandboxContainer(id string) *oci.Container {
return sb.infraContainer return sb.infraContainer
} }
// GetContainer returns a container by its ID
func (s *Server) GetContainer(id string) *oci.Container {
return s.getContainer(id)
}
func (s *Server) removeContainer(c *oci.Container) { func (s *Server) removeContainer(c *oci.Container) {
s.stateLock.Lock() s.stateLock.Lock()
sandbox := s.state.sandboxes[c.Sandbox()] sandbox := s.state.sandboxes[c.Sandbox()]