mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net: avoid darwin/arm64 platform bug in TestCloseWrite
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>
This commit is contained in:
parent
68289f39f0
commit
a42573c2f1
1 changed files with 11 additions and 0 deletions
|
|
@ -97,6 +97,17 @@ func TestCloseWrite(t *testing.T) {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
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() {
|
if !deadline.IsZero() {
|
||||||
c.SetDeadline(deadline)
|
c.SetDeadline(deadline)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue