From 3c2a44dca314f5c762c4fe11f2ea89dfc52b0167 Mon Sep 17 00:00:00 2001 From: Raghav Jhavar <156360524+raghav-stripe@users.noreply.github.com> Date: Thu, 15 Feb 2024 15:07:19 -0800 Subject: [PATCH] transport: when using write buffer pooling, use input size instead of size*2 (#6983) --- dialoptions.go | 4 +--- internal/transport/http_util.go | 3 +-- server.go | 8 +++----- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/dialoptions.go b/dialoptions.go index ba2426180..a95f86a1f 100644 --- a/dialoptions.go +++ b/dialoptions.go @@ -154,9 +154,7 @@ func WithSharedWriteBuffer(val bool) DialOption { } // WithWriteBufferSize determines how much data can be batched before doing a -// write on the wire. The corresponding memory allocation for this buffer will -// be twice the size to keep syscalls low. The default value for this buffer is -// 32KB. +// write on the wire. The default value for this buffer is 32KB. // // Zero or negative values will disable the write buffer such that each write // will be on underlying connection. Note: A Send call may not directly diff --git a/internal/transport/http_util.go b/internal/transport/http_util.go index dc29d590e..39cef3bd4 100644 --- a/internal/transport/http_util.go +++ b/internal/transport/http_util.go @@ -418,10 +418,9 @@ func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, sharedWriteBu return f } -func getWriteBufferPool(writeBufferSize int) *sync.Pool { +func getWriteBufferPool(size int) *sync.Pool { writeBufferMutex.Lock() defer writeBufferMutex.Unlock() - size := writeBufferSize * 2 pool, ok := writeBufferPoolMap[size] if ok { return pool diff --git a/server.go b/server.go index 0bf5c78b0..5792fabd7 100644 --- a/server.go +++ b/server.go @@ -249,11 +249,9 @@ func SharedWriteBuffer(val bool) ServerOption { } // WriteBufferSize determines how much data can be batched before doing a write -// on the wire. The corresponding memory allocation for this buffer will be -// twice the size to keep syscalls low. The default value for this buffer is -// 32KB. Zero or negative values will disable the write buffer such that each -// write will be on underlying connection. -// Note: A Send call may not directly translate to a write. +// on the wire. The default value for this buffer is 32KB. Zero or negative +// values will disable the write buffer such that each write will be on underlying +// connection. Note: A Send call may not directly translate to a write. func WriteBufferSize(s int) ServerOption { return newFuncServerOption(func(o *serverOptions) { o.writeBufferSize = s