rpc: use synctest for TestClientCancelHTTP to fix CI flakiness#20368
Merged
AskAlexSharov merged 1 commit intorelease/3.4from Apr 7, 2026
Merged
rpc: use synctest for TestClientCancelHTTP to fix CI flakiness#20368AskAlexSharov merged 1 commit intorelease/3.4from
AskAlexSharov merged 1 commit intorelease/3.4from
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Updates RPC client cancellation testing to reduce CI flakiness by making the HTTP-path test deterministic and in-memory while keeping the WebSocket-path test on real TCP due to shutdown constraints.
Changes:
- Refactors
testClientCancelto split HTTP (synctest + in-memory listener) vs WS (real TCP) implementations. - Introduces
memListener+memHTTPTestClient(net.Pipe-based) to avoid real networking in the HTTP cancel test. - Extracts the concurrent cancel-caller logic into
runCancelCallersfor reuse across transports.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Replace real TCP connections with in-memory net.Pipe-based listener for the HTTP cancel test, wrapped in synctest.Test for deterministic fake-time execution. The test now runs in ~0s instead of timing out on slow CI runners. WebSocket cancel test keeps real TCP due to complex goroutine shutdown dependencies incompatible with synctest's bubble requirements.
ccda256 to
daff441
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
sudeepdino008
approved these changes
Apr 7, 2026
AskAlexSharov
added a commit
that referenced
this pull request
Apr 8, 2026
Replace real TCP connections with in-memory net.Pipe-based listener for
the HTTP cancel test, wrapped in synctest.Test for deterministic
fake-time execution. The test now runs in ~0s instead of timing out on
slow CI runners.
WebSocket cancel test keeps real TCP due to complex goroutine shutdown
dependencies incompatible with synctest's bubble requirements.
err:
```
[WARN] [04-07|01:51:47.496] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.496] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.497] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.507] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.507] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.507] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.510] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.510] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.510] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.512] [rpc] served method=test_returnError reqid=1 err=testError errdata="testError data"
[WARN] [04-07|01:51:47.513] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.513] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.513] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.515] [rpc] served method=no_such_method reqid=3 err="the method no_such_method does not exist/is not available"
[WARN] [04-07|01:51:47.516] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.516] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.516] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.517] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.517] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.518] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.519] [rpc] served method=eth_subscribe reqid=1 err="no \"foo_bar\" subscription in eth namespace"
[WARN] [04-07|01:51:47.519] [rpc] served method=eth_subscribe reqid=2 err="no \"foo_bar\" subscription in eth namespace"
[WARN] [04-07|01:51:47.520] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.520] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.520] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.523] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.523] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.524] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.527] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.527] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.527] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.563] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.563] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.563] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:56.015] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:56.015] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:56.015] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:56.019] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:56.019] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:56.019] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:56.103] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:56.103] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:56.103] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:58.107] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:58.107] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:58.107] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.735] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.735] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.735] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.738] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.738] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.738] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.740] [rpc] served method=unknown_method reqid=2 err="the method unknown_method does not exist/is not available"
[WARN] [04-07|01:52:32.741] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.741] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.741] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.743] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.743] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.743] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.744] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.744] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.744] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.745] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.745] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.745] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.746] [rpc] served method=test_echo reqid=2 err="missing value for required argument 0"
[WARN] [04-07|01:52:32.746] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.747] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.747] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.748] [rpc] served method=test_echo reqid=2 err="missing value for required argument 0"
[WARN] [04-07|01:52:32.748] [rpc] served method=test_echo reqid=2 err="missing value for required argument 1"
[WARN] [04-07|01:52:32.750] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.750] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.750] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.751] [rpc] served method=test_echo reqid=3 err="non-array args"
[WARN] [04-07|01:52:32.751] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.751] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.751] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.752] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.752] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.752] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.753] [rpc] served method=invalid_method reqid=2 err="the method invalid_method does not exist/is not available"
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.757] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.757] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.757] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.758] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.758] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.758] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.760] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.760] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.760] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.771] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.771] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.771] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
--- FAIL: TestClientCancelWebsocket (1.00s)
panic: read tcp 127.0.0.1:59236->127.0.0.1:33899: read: connection reset by peer [recovered, repanicked]
goroutine 66 [running]:
testing.tRunner.func1.2({0x117cd40, 0xc000059720})
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1872 +0x419
testing.tRunner.func1()
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1875 +0x683
panic({0x117cd40?, 0xc000059720?})
/opt/hostedtoolcache/go/1.25.8/x64/src/runtime/panic.go:783 +0x132
github.com/erigontech/erigon/rpc.httpTestClient(0xc000324180, {0x11fcef1, 0x2}, 0xc000059120)
/home/runner/work/erigon/erigon/rpc/client_test.go:619 +0x6b9
github.com/erigontech/erigon/rpc.testClientCancel({0x11fcef1, 0x2}, 0xc000102e00, {0x136dd10, 0xc000300c60})
/home/runner/work/erigon/erigon/rpc/client_test.go:206 +0x256
github.com/erigontech/erigon/rpc.TestClientCancelWebsocket(0xc000102e00)
/home/runner/work/erigon/erigon/rpc/client_test.go:166 +0x58
testing.tRunner(0xc000102e00, 0x1241000)
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1997 +0x9d3
goroutine 1 [chan receive]:
testing.tRunner.func1()
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1891 +0x9ad
testing.tRunner(0xc00037e1c0, 0xc000053ae0)
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1940 +0x256
testing.runTests(0xc00035c3c0, {0x198f6a0, 0x28, 0x28}, {0x0?, 0x4bba45?, 0x1999960?})
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:2475 +0x96d
testing.(*M).Run(0xc00037a140)
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:2337 +0xed5
main.main()
_testmain.go:129 +0x165
goroutine 37 [chan receive]:
```
github-merge-queue bot
pushed a commit
that referenced
this pull request
Apr 10, 2026
## Summary Cherry-pick of release/3.4 PRs: - #20368 rpc: use synctest for TestClientCancelHTTP to fix CI flakiness - #20373 integrity: blk/sec fix - #20372 execution/state: use index-based range over log topics to avoid copy - #20367 fix: preserve stored chain config when genesis hash doesn't match known chain - #20374 ParseVersion: optimize - #20369 batchSize: more precise estimate - #20399 hive: pin more things --------- Co-authored-by: erigon-copilot[bot] <265817861+erigon-copilot[bot]@users.noreply.github.com> Co-authored-by: root <giulio.rebuffo@gmail.com> Co-authored-by: yperbasis <andrey.ashikhmin@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Muzry <muzrry@gmail.com> Co-authored-by: muzry.li <muzry.li1@ambergroup.io> Co-authored-by: Andrew Ashikhmin <34320705+yperbasis@users.noreply.github.com> Co-authored-by: info@weblogix.biz <admin@10gbps.weblogix.it>
AskAlexSharov
added a commit
that referenced
this pull request
Apr 18, 2026
Replace real TCP connections with in-memory net.Pipe-based listener for
the HTTP cancel test, wrapped in synctest.Test for deterministic
fake-time execution. The test now runs in ~0s instead of timing out on
slow CI runners.
WebSocket cancel test keeps real TCP due to complex goroutine shutdown
dependencies incompatible with synctest's bubble requirements.
err:
```
[WARN] [04-07|01:51:47.496] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.496] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.497] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.507] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.507] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.507] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.510] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.510] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.510] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.512] [rpc] served method=test_returnError reqid=1 err=testError errdata="testError data"
[WARN] [04-07|01:51:47.513] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.513] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.513] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.515] [rpc] served method=no_such_method reqid=3 err="the method no_such_method does not exist/is not available"
[WARN] [04-07|01:51:47.516] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.516] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.516] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.517] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.517] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.518] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.519] [rpc] served method=eth_subscribe reqid=1 err="no \"foo_bar\" subscription in eth namespace"
[WARN] [04-07|01:51:47.519] [rpc] served method=eth_subscribe reqid=2 err="no \"foo_bar\" subscription in eth namespace"
[WARN] [04-07|01:51:47.520] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.520] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.520] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.523] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.523] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.524] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.527] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.527] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.527] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:47.563] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:47.563] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:47.563] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:56.015] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:56.015] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:56.015] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:56.019] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:56.019] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:56.019] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:56.103] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:56.103] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:56.103] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:51:58.107] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:51:58.107] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:51:58.107] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.735] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.735] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.735] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.737] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.738] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.738] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.738] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.740] [rpc] served method=unknown_method reqid=2 err="the method unknown_method does not exist/is not available"
[WARN] [04-07|01:52:32.741] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.741] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.741] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.743] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.743] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.743] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.744] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.744] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.744] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.745] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.745] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.745] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.746] [rpc] served method=test_echo reqid=2 err="missing value for required argument 0"
[WARN] [04-07|01:52:32.746] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.747] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.747] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.748] [rpc] served method=test_echo reqid=2 err="missing value for required argument 0"
[WARN] [04-07|01:52:32.748] [rpc] served method=test_echo reqid=2 err="missing value for required argument 1"
[WARN] [04-07|01:52:32.750] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.750] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.750] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.751] [rpc] served method=test_echo reqid=3 err="non-array args"
[WARN] [04-07|01:52:32.751] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.751] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.751] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.752] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.752] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.752] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.753] [rpc] served method=invalid_method reqid=2 err="the method invalid_method does not exist/is not available"
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.754] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.755] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.757] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.757] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.757] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.758] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.758] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.758] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.760] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.760] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.760] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:32.771] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:32.771] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:32.771] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets1] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets2] - error must the last return value
[WARN] [04-07|01:52:44.363] Cannot register RPC callback [invalidRets3] - maximum 2 return values are allowed, got 3
--- FAIL: TestClientCancelWebsocket (1.00s)
panic: read tcp 127.0.0.1:59236->127.0.0.1:33899: read: connection reset by peer [recovered, repanicked]
goroutine 66 [running]:
testing.tRunner.func1.2({0x117cd40, 0xc000059720})
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1872 +0x419
testing.tRunner.func1()
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1875 +0x683
panic({0x117cd40?, 0xc000059720?})
/opt/hostedtoolcache/go/1.25.8/x64/src/runtime/panic.go:783 +0x132
github.com/erigontech/erigon/rpc.httpTestClient(0xc000324180, {0x11fcef1, 0x2}, 0xc000059120)
/home/runner/work/erigon/erigon/rpc/client_test.go:619 +0x6b9
github.com/erigontech/erigon/rpc.testClientCancel({0x11fcef1, 0x2}, 0xc000102e00, {0x136dd10, 0xc000300c60})
/home/runner/work/erigon/erigon/rpc/client_test.go:206 +0x256
github.com/erigontech/erigon/rpc.TestClientCancelWebsocket(0xc000102e00)
/home/runner/work/erigon/erigon/rpc/client_test.go:166 +0x58
testing.tRunner(0xc000102e00, 0x1241000)
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1997 +0x9d3
goroutine 1 [chan receive]:
testing.tRunner.func1()
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1891 +0x9ad
testing.tRunner(0xc00037e1c0, 0xc000053ae0)
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:1940 +0x256
testing.runTests(0xc00035c3c0, {0x198f6a0, 0x28, 0x28}, {0x0?, 0x4bba45?, 0x1999960?})
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:2475 +0x96d
testing.(*M).Run(0xc00037a140)
/opt/hostedtoolcache/go/1.25.8/x64/src/testing/testing.go:2337 +0xed5
main.main()
_testmain.go:129 +0x165
goroutine 37 [chan receive]:
```
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace real TCP connections with in-memory net.Pipe-based listener for the HTTP cancel test, wrapped in synctest.Test for deterministic fake-time execution. The test now runs in ~0s instead of timing out on slow CI runners.
WebSocket cancel test keeps real TCP due to complex goroutine shutdown dependencies incompatible with synctest's bubble requirements.
err: