From 800e8fb54cd872f11bdf5552c6ec480a3522d92a Mon Sep 17 00:00:00 2001 From: feisky Date: Sat, 12 Sep 2015 00:28:31 +0800 Subject: [PATCH] Fix kubelet logs --follow bug --- pkg/apiserver/handlers.go | 9 +++++++++ pkg/kubelet/server.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/apiserver/handlers.go b/pkg/apiserver/handlers.go index 6dfe6cb8afc..6f12269bdec 100644 --- a/pkg/apiserver/handlers.go +++ b/pkg/apiserver/handlers.go @@ -230,6 +230,15 @@ func (tw *baseTimeoutWriter) Write(p []byte) (int, error) { return tw.w.Write(p) } +func (tw *baseTimeoutWriter) Flush() { + tw.mu.Lock() + defer tw.mu.Unlock() + + if flusher, ok := tw.w.(http.Flusher); ok { + flusher.Flush() + } +} + func (tw *baseTimeoutWriter) WriteHeader(code int) { tw.mu.Lock() defer tw.mu.Unlock() diff --git a/pkg/kubelet/server.go b/pkg/kubelet/server.go index f8075832f28..270e050ad0f 100644 --- a/pkg/kubelet/server.go +++ b/pkg/kubelet/server.go @@ -347,7 +347,7 @@ func (s *Server) getContainerLogs(request *restful.Request, response *restful.Re response.WriteError(http.StatusInternalServerError, fmt.Errorf("unable to convert %v into http.Flusher", response)) return } - fw := flushwriter.Wrap(response) + fw := flushwriter.Wrap(response.ResponseWriter) response.Header().Set("Transfer-Encoding", "chunked") response.WriteHeader(http.StatusOK) err := s.host.GetKubeletContainerLogs(kubecontainer.GetPodFullName(pod), containerName, tail, follow, previous, fw, fw)