Skip to content

Commit

Permalink
transport: when using write buffer pooling, use input size instead of…
Browse files Browse the repository at this point in the history
… size*2 (#6983)
  • Loading branch information
raghav-stripe authored Feb 15, 2024
1 parent 3ae77e6 commit 3c2a44d
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 10 deletions.
4 changes: 1 addition & 3 deletions dialoptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions internal/transport/http_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 3 additions & 5 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 3c2a44d

Please sign in to comment.