Skip to content

TestDrainRecvBufferEmptiesAWindowBlockedPeer still gates on the per-namespace TCPAbortOnClose counter that #608 made diagnostic only #825

Description

@FumingPower3925

TestDrainRecvBufferEmptiesAWindowBlockedPeer (internal/sockopts/drain_recv_tcp_linux_test.go) still fails the test on the TCPAbortOnClose delta read from /proc/net/netstat around its close(2):

if abortOnClose != 0 {
	t.Errorf("close(2) reset the connection (TCPAbortOnClose +%d): the peer loses the staged send buffer (celeris#569)", abortOnClose)
}

That counter is per network namespace, not per socket, which is why #608 (#617) made these deltas diagnostic only in the Tier 0 truth table; the NOTE a few lines above this very assertion says "these two deltas are DIAGNOSTIC ONLY and nothing asserts on them". This test kept one.

It went red in the Coverage (root + middleware sub-modules) job on #808's head 0df4ac2 (run 36570377360, job 109412586512), where the package runs next to the engine packages, whose tests close many sockets with unread data at the same time:

--- FAIL: TestDrainRecvBufferEmptiesAWindowBlockedPeer (0.06s)
    drain_recv_tcp_linux_test.go:264: TIER0-WINDOWBLOCKED sent=2750604 inq_before=458699 drained=458699 inq_after=0 rcvbuf=524288 elapsed=132.97µs abortOnClose=+5 peer=EOF
    drain_recv_tcp_linux_test.go:271: close(2) reset the connection (TCPAbortOnClose +5): the peer loses the staged send buffer (celeris#569)

Every per-connection column is right (inq_after=0, the peer saw EOF, not a reset), and a reset of this socket would have shown in peer=. The same test passed in the Unit job of the same head (run 36570377254), where the package ran in the race step. #808 does not touch internal/sockopts.

Fix: drop the abortOnClose assertion and keep printing the delta, as #617 did for the truth table; inq_after == 0 and peer == EOF already carry the #569 signal. It can hit the required Unit job the same way.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/testTesting infrastructurebugSomething isn't working

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions