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
When enabling CI on Windows for release/1.1 branch (#163), an edge case was found via unit tests when running on the latest Windows platform with Go 1.20+ toolchain.
=== RUN TestOversizeCall
--- PASS: TestOversizeCall (0.03s)
=== RUN TestClientEOF
server_test.go:365: expected to have a cause of ErrClosed, got read unix @->TestClientEOF: wsarecv: An existing connection was forcibly closed by the remote host.
--- FAIL: TestClientEOF (0.00s)
=== RUN TestServerRequestTimeout
--- PASS: TestServerRequestTimeout (0.01s)
=== RUN TestServerConnectionsLeak
--- PASS: TestServerConnectionsLeak (0.10s)
=== RUN Test_MethodFullNameGeneration
--- PASS: Test_MethodFullNameGeneration (0.00s)
FAIL
github.com/containerd/ttrpc coverage: 76.3% of statements
FAIL github.com/containerd/ttrpc 1.696s
? github.com/containerd/ttrpc/cmd/protoc-gen-gogottrpc [no test files]
? github.com/containerd/ttrpc/example [no test files]
? github.com/containerd/ttrpc/example/cmd [no test files]
? github.com/containerd/ttrpc/plugin [no test files]
FAIL
The root cause is client not able to filter the connection closed by server error on Windows platform with the updated toolchain.
Ref:
Problem
When enabling CI on Windows for release/1.1 branch (#163), an edge case was found via unit tests when running on the latest Windows platform with Go 1.20+ toolchain.
The root cause is client not able to filter the connection closed by server error on Windows platform with the updated toolchain.
Ref:
ttrpc/client.go
Line 385 in 20c493e
The impact is the client error does not get set to ErrClosed as expected.
Ref:
ttrpc/client.go
Line 38 in 20c493e
Recommended Solution
The recommended solution would be to filter the error based on platform error using golang.org/x/sys package.
The solution should enable testing on Windows platform and existing TestClientEOF test should be sufficient to determine if issue is resolved.
Alternative solutions considered
Filter
io.ErrClosedPIpe
(Not viable)This solution was to filter error closed on
io.ErrClosedPipe
.Ref: https://github.com/containerd/ttrpc/blame/4a2816be9b4843f2cf40f1e533e7830d23f4489b/client.go#L450
Opened #165 and found this approach did not resolve the issue.
Filter based on error string
This solution would filter error closed based on the error string.
The text was updated successfully, but these errors were encountered: