operator-framework / operator-framework/ansible-operator-plugins

Error while proxying request - [http2: Transport received Server's graceful shutdown GOAWAY]

Open
#180 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
12
Forks
33
PR merge metrics
No merged PRs in 30d

Description

Bug Report

What did you do?

Observe Operator logs

What did you expect to see?

No error messages

What did you see instead? Under which circumstances?
{
   "level":"error",
   "ts":"2025-11-09T14:44:53Z",
   "logger":"proxy",
   "msg":"Error while proxying request",
   "error":"http2: Transport: cannot retry err [http2: Transport received Server's graceful shutdown GOAWAY] after Request.Body was written; define Request.GetBody to avoid this error",
   "stacktrace":"
	github.com/operator-framework/ansible-operator-plugins/internal/ansible/proxy.(*responder).Error
		ansible-operator-plugins/internal/ansible/proxy/kubectl.go:164
	net/http/httputil.(*ReverseProxy).ServeHTTP
		/opt/hostedtoolcache/go/1.24.3/x64/src/net/http/httputil/reverseproxy.go:486
	k8s.io/apimachinery/pkg/util/proxy.(*UpgradeAwareHandler).ServeHTTP
		/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.33.2/pkg/util/proxy/upgradeaware.go:293
	github.com/operator-framework/ansible-operator-plugins/internal/ansible/proxy.newServer.stripLeaveSlash.func1
		ansible-operator-plugins/internal/ansible/proxy/kubectl.go:276
	net/http.HandlerFunc.ServeHTTP
		/opt/hostedtoolcache/go/1.24.3/x64/src/net/http/server.go:2294
	net/http.(*ServeMux).ServeHTTP
		/opt/hostedtoolcache/go/1.24.3/x64/src/net/http/server.go:2822
	github.com/operator-framework/ansible-operator-plugins/internal/ansible/proxy.Run.removeAuthorizationHeader.func3
		ansible-operator-plugins/internal/ansible/proxy/proxy.go:282
	net/http.HandlerFunc.ServeHTTP
		/opt/hostedtoolcache/go/1.24.3/x64/src/net/http/server.go:2294
	github.com/operator-framework/ansible-operator-plugins/internal/ansible/proxy.(*cacheResponseHandler).ServeHTTP
		ansible-operator-plugins/internal/ansible/proxy/cache_response.go:150
	net/http.serverHandler.ServeHTTP
		/opt/hostedtoolcache/go/1.24.3/x64/src/net/http/server.go:3301
	net/http.(*conn).serve
		/opt/hostedtoolcache/go/1.24.3/x64/src/net/http/server.go:2102"
}
Environment

Kubernetes cluster type:

OpenShift 4.18.25

$ operator-sdk version

ansible-operator version: "v1.41.0", commit: "8e923f25256c2b64c85a2c9dfabd157e8f880ea8", kubernetes version: "v1.32.0", go version: "go1.24.4", GOOS: "linux", GOARCH: "amd64"

$ go version (if language is Go)

1.24.4

$ kubectl version

1.29.7

Possible Solution

The client should possibly handle GOAWAY more gracefully.

Additional context

This appears as part of

(Set goaway chance to 0.001)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the proxy error through internal/ansible/proxy/kubectl.go, especially responder.Error and newServer, then inspect the surrounding ReverseProxy and cache response handling shown in the stack trace. Reproduce the HTTP/2 GOAWAY scenario if possible and define completion as handling the graceful shutdown without emitting the observed proxy error.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.