mirror of
https://github.com/tailscale/tailscale.git
synced 2025-03-29 20:42:22 +00:00
wgengine/bench: ignore "engine closing" errors
On benchmark completion, we shut down the wgengine. If we happen to poll for status during shutdown, we get an "engine closing" error. It doesn't hurt anything; ignore it. Fixes tailscale/corp#1776 Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
parent
d707e2f7e5
commit
68911f6778
@ -5,6 +5,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
@ -89,6 +90,9 @@ func setupWGTest(b *testing.B, logf logger.Logf, traf *TrafficGen, a1, a2 netadd
|
|||||||
|
|
||||||
var e1waitDoneOnce sync.Once
|
var e1waitDoneOnce sync.Once
|
||||||
e1.SetStatusCallback(func(st *wgengine.Status, err error) {
|
e1.SetStatusCallback(func(st *wgengine.Status, err error) {
|
||||||
|
if errors.Is(err, wgengine.ErrEngineClosing) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("e1 status err: %v", err)
|
log.Fatalf("e1 status err: %v", err)
|
||||||
}
|
}
|
||||||
@ -124,6 +128,9 @@ func setupWGTest(b *testing.B, logf logger.Logf, traf *TrafficGen, a1, a2 netadd
|
|||||||
|
|
||||||
var e2waitDoneOnce sync.Once
|
var e2waitDoneOnce sync.Once
|
||||||
e2.SetStatusCallback(func(st *wgengine.Status, err error) {
|
e2.SetStatusCallback(func(st *wgengine.Status, err error) {
|
||||||
|
if errors.Is(err, wgengine.ErrEngineClosing) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("e2 status err: %v", err)
|
log.Fatalf("e2 status err: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -880,6 +880,8 @@ func (e *userspaceEngine) getStatusCallback() StatusCallback {
|
|||||||
|
|
||||||
var singleNewline = []byte{'\n'}
|
var singleNewline = []byte{'\n'}
|
||||||
|
|
||||||
|
var ErrEngineClosing = errors.New("engine closing; no status")
|
||||||
|
|
||||||
func (e *userspaceEngine) getStatus() (*Status, error) {
|
func (e *userspaceEngine) getStatus() (*Status, error) {
|
||||||
// Grab derpConns before acquiring wgLock to not violate lock ordering;
|
// Grab derpConns before acquiring wgLock to not violate lock ordering;
|
||||||
// the DERPs method acquires magicsock.Conn.mu.
|
// the DERPs method acquires magicsock.Conn.mu.
|
||||||
@ -893,7 +895,7 @@ func (e *userspaceEngine) getStatus() (*Status, error) {
|
|||||||
closing := e.closing
|
closing := e.closing
|
||||||
e.mu.Unlock()
|
e.mu.Unlock()
|
||||||
if closing {
|
if closing {
|
||||||
return nil, errors.New("engine closing; no status")
|
return nil, ErrEngineClosing
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.wgdev == nil {
|
if e.wgdev == nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user