Fix data race on injectedHTTPClient in client package#1616
Fix data race on injectedHTTPClient in client package#1616
Conversation
Add sync.RWMutex to protect concurrent read/write access to the package-level injectedHTTPClient variable, which was causing flaky test failures when TestGetHTTPClient and TestHttpClientProvidesOAuth2BearerToken ran in parallel with -race. Agent-Logs-Url: https://github.com/TwiN/gatus/sessions/5eccf19f-b033-4bf0-9d3b-4e462e7e89c4 Co-authored-by: TwiN <15699766+TwiN@users.noreply.github.com>
|
@TwiN I'd like to object strongly to merging this pull request for a variety of reasons. Furthermore, I'd like to request a reversion of commits 64116ce, f925cb4 and 7208880. |
|
@OrionOth I understand your stance, alas, I don't personally think there's much that can be done to prevent the usage of LLMs from becoming the norm. I would rather create instructions (that's what some of the commits you pointed out are for) for agents to both direct them and request agents identify themselves (model/version) properly via PRs so that I can treat the PRs as such (more carefully). At this point, I'd be willing to bet most new PRs are generated using AI agents already. |
Flaky CI failures due to a data race on the package-level
injectedHTTPClientvariable.TestGetHTTPClientandTestHttpClientProvidesOAuth2BearerTokenboth run witht.Parallel()and concurrently read/write the unprotected global, tripping the-racedetector and cascading failures to all concurrent tests in the package.sync.RWMutexto guardinjectedHTTPClientaccess inGetHTTPClient()(read) andInjectHTTPClient()(write)Confirmed with
go test -race -count=10— zero races across iterations.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
1.0.0.1.in-addr.arpa/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)192.168.152.153REDACTED, pid is -1(packet block)8.8.8.8.in-addr.arpa/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)data.iana.org/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)en.wikipedia.org/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)example.com/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)example.org/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)expired.badssl.com/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)idontplaytheodds.com/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)smtp.gmail.com/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)test/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)tty.sdf.org/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)whois.nic.io/tmp/go-build3186497109/b001/client.test /tmp/go-build3186497109/b001/client.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 /tmp/go-build3186497109/b349/vet.cfg g_.a /tmp/go-build269go1.25.5 4/pkg/tool/linux_amd64/vet . /icmp mpile 4/pkg/tool/linux-buildtags -I chain@v0.0.1-go1-errorsas mpile 4/pkg/tool/linux_amd64/vet AFX9BbFhU /go/auth/credent-atomic mpile 4/pkg/tool/linux-buildtags(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt