Help debug port forward flakes

This commit is contained in:
Andy Goldstein 2016-01-28 15:28:40 -05:00
parent 146a9e6075
commit 86ae623a09

View File

@ -1215,9 +1215,15 @@ func (dm *DockerManager) PortForward(pod *kubecontainer.Pod, port uint16, stream
return fmt.Errorf("unable to do port forwarding: nsenter not found.") return fmt.Errorf("unable to do port forwarding: nsenter not found.")
} }
commandString := fmt.Sprintf("%s %s", nsenterPath, strings.Join(args, " "))
glog.V(4).Infof("executing port forwarding command: %s", commandString)
command := exec.Command(nsenterPath, args...) command := exec.Command(nsenterPath, args...)
command.Stdout = stream command.Stdout = stream
stderr := new(bytes.Buffer)
command.Stderr = stderr
// If we use Stdin, command.Run() won't return until the goroutine that's copying // If we use Stdin, command.Run() won't return until the goroutine that's copying
// from stream finishes. Unfortunately, if you have a client like telnet connected // from stream finishes. Unfortunately, if you have a client like telnet connected
// via port forwarding, as long as the user's telnet client is connected to the user's // via port forwarding, as long as the user's telnet client is connected to the user's
@ -1236,7 +1242,11 @@ func (dm *DockerManager) PortForward(pod *kubecontainer.Pod, port uint16, stream
inPipe.Close() inPipe.Close()
}() }()
return command.Run() if err := command.Run(); err != nil {
return fmt.Errorf("%v: %s", err, stderr.String())
}
return nil
} }
// Get the IP address of a container's interface using nsenter // Get the IP address of a container's interface using nsenter