Periodically flush the reverse proxy.

parent 2d88675f
......@@ -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 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment