]> Cypherpunks repositories - gostls13.git/commitdiff
net: avoid darwin/arm64 platform bug in TestCloseWrite
authorBryan C. Mills <bcmills@google.com>
Mon, 27 Jun 2022 17:58:55 +0000 (13:58 -0400)
committerGopher Robot <gobot@golang.org>
Mon, 27 Jun 2022 18:18:08 +0000 (18:18 +0000)
On darwin_arm64, reading from a socket at the same time as the other
end is closing it will occasionally hang for 60 seconds before
returning ECONNRESET. (This is a macOS issue, not a Go issue.)

Work around this condition by adding a brief sleep before the read.

Fixes #49352 (we hope).
Updates #37795.

Change-Id: I4052aec21d311d7370550aea9dd7941f39141133
Reviewed-on: https://go-review.googlesource.com/c/go/+/414534
Run-TryBot: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/net/net_test.go

index 29a2c5d4baa2308eb56bcad58b4a05f271038038..c297c51fb9ea603bb7dc6c1eecb20cd138c120e6 100644 (file)
@@ -97,6 +97,17 @@ func TestCloseWrite(t *testing.T) {
                                        t.Error(err)
                                        return
                                }
+
+                               // Workaround for https://go.dev/issue/49352.
+                               // On arm64 macOS (current as of macOS 12.4),
+                               // reading from a socket at the same time as the client
+                               // is closing it occasionally hangs for 60 seconds before
+                               // returning ECONNRESET. Sleep for a bit to give the
+                               // socket time to close before trying to read from it.
+                               if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" {
+                                       time.Sleep(10 * time.Millisecond)
+                               }
+
                                if !deadline.IsZero() {
                                        c.SetDeadline(deadline)
                                }