Skip to content

Commit

Permalink
net: work around runtime scheduler starvation on js and wasip1
Browse files Browse the repository at this point in the history
Fixes golang#65177.
Updates golang#65178.
Updates golang#64321.

Change-Id: I698fd3b688c7dfbde692eb7c29cbdafc89e7ca32
Cq-Include-Trybots: luci.golang.try:gotip-js-wasm,gotip-wasip1-wasm_wasmtime,gotip-wasip1-wasm_wazero
Reviewed-on: https://go-review.googlesource.com/c/go/+/557037
Auto-Submit: Bryan Mills <bcmills@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
  • Loading branch information
Bryan C. Mills authored and gopherbot committed Jan 19, 2024
1 parent f5e475e commit f19f31f
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/net/net_fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"errors"
"io"
"os"
"runtime"
"sync"
"sync/atomic"
"syscall"
Expand Down Expand Up @@ -513,6 +514,15 @@ func (pq *packetQueue) send(dt *deadlineTimer, b []byte, from sockaddr, block bo
if !block {
full = pq.full
}

// Before we check dt.expired, yield to other goroutines.
// This may help to prevent starvation of the goroutine that runs the
// deadlineTimer's time.After callback.
//
// TODO(#65178): Remove this when the runtime scheduler no longer starves
// runnable goroutines.
runtime.Gosched()

select {
case <-dt.expired:
return 0, os.ErrDeadlineExceeded
Expand Down Expand Up @@ -563,6 +573,15 @@ func (pq *packetQueue) recvfrom(dt *deadlineTimer, b []byte, wholePacket bool, c
// (Without this, TestZeroByteRead deadlocks.)
empty = pq.empty
}

// Before we check dt.expired, yield to other goroutines.
// This may help to prevent starvation of the goroutine that runs the
// deadlineTimer's time.After callback.
//
// TODO(#65178): Remove this when the runtime scheduler no longer starves
// runnable goroutines.
runtime.Gosched()

select {
case <-dt.expired:
return 0, nil, os.ErrDeadlineExceeded
Expand Down

0 comments on commit f19f31f

Please sign in to comment.