Merge pull request #11759 from bprashanth/flushing_proxy

Periodically flush the reverse proxy
pull/6/head
Vish Kannan 2015-07-23 17:09:03 -07:00
commit 7017f5dc85
1 changed files with 12 additions and 1 deletions

View File

@ -24,6 +24,7 @@ import (
"net/url"
"regexp"
"strings"
"time"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/golang/glog"
@ -36,6 +37,16 @@ const (
DefaultMethodRejectRE = "POST,PUT,PATCH"
)
var (
// The reverse proxy will periodically flush the io writer at this frequency.
// Only matters for long poll connections like the one used to watch. With an
// interval of 0 the reverse proxy will buffer content sent on any connection
// with transfer-encoding=chunked.
// TODO: Flush after each chunk so the client doesn't suffer a 100ms latency per
// watch event.
ReverseProxyFlushInterval = 100 * time.Millisecond
)
// FilterServer rejects requests which don't match one of the specified regular expressions
type FilterServer struct {
// Only paths that match this regexp will be accepted
@ -171,7 +182,7 @@ func newProxy(target *url.URL) *httputil.ReverseProxy {
req.URL.Host = target.Host
req.URL.Path = singleJoiningSlash(target.Path, req.URL.Path)
}
return &httputil.ReverseProxy{Director: director}
return &httputil.ReverseProxy{Director: director, FlushInterval: ReverseProxyFlushInterval}
}
func newFileHandler(prefix, base string) http.Handler {