From 9e5d79e2f133eaeda4a77a8d0d27e9e1643ea4fb Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Sun, 31 May 2020 15:29:04 -0700 Subject: [PATCH] wgengine/magicsock: drop a bytes.Buffer sync.Pool, use logger.ArgWriter instead --- wgengine/magicsock/magicsock.go | 42 +++++++++++++-------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index 08e0f7df0..7fa946c8f 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -7,7 +7,7 @@ package magicsock import ( - "bytes" + "bufio" "context" "encoding/binary" "errors" @@ -1362,37 +1362,29 @@ func (c *Conn) closeDerpLocked(node int, why string) { } } -var bufPool = sync.Pool{New: func() interface{} { return new(bytes.Buffer) }} - // c.mu must be held. func (c *Conn) logActiveDerpLocked() { - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) now := time.Now() - buf.Reset() - buf.WriteString(": ") - c.foreachActiveDerpSortedLocked(func(node int, ad activeDerp) { - fmt.Fprintf(buf, "derp-%d=cr%v,wr%v ", node, simpleDur(now.Sub(ad.createTime)), simpleDur(now.Sub(*ad.lastWrite))) - }) - var details []byte - if buf.Len() > len(": ") { - details = bytes.TrimSpace(buf.Bytes()) - } - c.logf("magicsock: %v active derp conns%s", len(c.activeDerp), details) + c.logf("magicsock: %v active derp conns%s", len(c.activeDerp), logger.ArgWriter(func(buf *bufio.Writer) { + if len(c.activeDerp) == 0 { + return + } + buf.WriteString(":") + c.foreachActiveDerpSortedLocked(func(node int, ad activeDerp) { + fmt.Fprintf(buf, " derp-%d=cr%v,wr%v", node, simpleDur(now.Sub(ad.createTime)), simpleDur(now.Sub(*ad.lastWrite))) + }) + })) } func (c *Conn) logEndpointChange(endpoints []string, reasons map[string]string) { - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) - buf.Reset() - buf.WriteString("magicsock: endpoints changed: ") - for i, ep := range endpoints { - if i > 0 { - buf.WriteString(", ") + c.logf("magicsock: endpoints changed: %s", logger.ArgWriter(func(buf *bufio.Writer) { + for i, ep := range endpoints { + if i > 0 { + buf.WriteString(", ") + } + fmt.Fprintf(buf, "%s (%s)", ep, reasons[ep]) } - fmt.Fprintf(buf, "%s (%s)", ep, reasons[ep]) - } - c.logf("%s", buf.Bytes()) + })) } // c.mu must be held.