You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You'll see in the queue-proxy logs Unable to enable full duplex and it doesn't work
{"severity":"error","timestamp":"2025-01-13T04:25:38.690Z","logger":"queueproxy","caller":"sharedmain/handlers.go:137","message":"Unable to enable full duplex","commit":"6a27004","knative.dev/key":"xxx/xxxx","knative.dev/pod":"xxxx","error":"feature not supported","stacktrace":"knative.dev/serving/pkg/queue/sharedmain.mainHandler.withFullDuplex.func5\n\tknative.dev/serving/pkg/queue/sharedmain/handlers.go:137\nnet/http.HandlerFunc.ServeHTTP\n\tnet/http/server.go:2171\nknative.dev/pkg/network/handlers.(*Drainer).ServeHTTP\n\tknative.dev/[email protected]/network/handlers/drain.go:113\ngolang.org/x/net/http2.(*serverConn).runHandler\n\tgolang.org/x/[email protected]/http2/server.go:2439"}
The text was updated successfully, but these errors were encountered:
@dprotaso This comes from the fact that HTTP2 is used (h2c, http2 cleartext) along with the full-duplex feature. The latter was meant for HTTP1. Am I missing something? Copying from net/http:
// EnableFullDuplex indicates that the request handler will interleave reads from [Request.Body]
// with writes to the [ResponseWriter].
//
// For HTTP/1 requests, the Go HTTP server by default consumes any unread portion of
// the request body before beginning to write the response, preventing handlers from
// concurrently reading from the request and writing the response.
// Calling EnableFullDuplex disables this behavior and permits handlers to continue to read
// from the request while concurrently writing the response.
//
// For HTTP/2 requests, the Go HTTP server always permits concurrent reads and responses.
func (c *ResponseController) EnableFullDuplex() error {
rw := c.rw
for {
switch t := rw.(type) {
case interface{ EnableFullDuplex() error }:
return t.EnableFullDuplex()
case rwUnwrapper:
rw = t.Unwrap()
default:
return errNotSupported()
}
}
}
Should we catch this earlier e.g. when we validate the revision?
You'll see in the queue-proxy logs
Unable to enable full duplex
and it doesn't workThe text was updated successfully, but these errors were encountered: