From 2bdbfdb23e15b1e26ffe826496d0170d4e8aa07d Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Fri, 14 Jul 2023 12:24:49 +0300 Subject: [PATCH] [#114] pool: Fix linter errors Signed-off-by: Denis Kirillov --- pool/parts_buffer_pool.go | 12 +++++++++--- pool/pool.go | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pool/parts_buffer_pool.go b/pool/parts_buffer_pool.go index b204f50..d02de66 100644 --- a/pool/parts_buffer_pool.go +++ b/pool/parts_buffer_pool.go @@ -24,7 +24,13 @@ func NewPartBufferPool(limit uint64, maxObjectSize uint64) *PartsBufferPool { limit: limit, maxObjectSize: maxObjectSize, available: limit, - syncPool: &sync.Pool{New: func() any { return make([]byte, maxObjectSize) }}, + syncPool: &sync.Pool{New: func() any { + // We have to use pointer (even for slices), see https://staticcheck.dev/docs/checks/#SA6002 + // It's based on interfaces implementation in 2016, so maybe something has changed since then. + // We can use no pointer for multi-kilobyte slices though https://github.com/golang/go/issues/16323#issuecomment-254401036 + buff := make([]byte, maxObjectSize) + return &buff + }}, } } @@ -43,7 +49,7 @@ func (p *PartsBufferPool) GetBuffer() (*PartBuffer, error) { p.available -= p.maxObjectSize return &PartBuffer{ - Buffer: p.syncPool.Get().([]byte), + Buffer: *p.syncPool.Get().(*[]byte), len: p.maxObjectSize, }, nil } @@ -58,7 +64,7 @@ func (p *PartsBufferPool) FreeBuffer(buff *PartBuffer) error { } p.available += buff.len - p.syncPool.Put(buff.Buffer) + p.syncPool.Put(&buff.Buffer) return nil } diff --git a/pool/pool.go b/pool/pool.go index cf6c9b6..1e52b90 100644 --- a/pool/pool.go +++ b/pool/pool.go @@ -2094,7 +2094,6 @@ func initSessionForDuration(ctx context.Context, dst *session.Object, c client, if clientCut { id = uuid.New() key = frostfsecdsa.PublicKey(ownerKey.PublicKey) - } else { res, err := c.sessionCreate(ctx, prm) if err != nil {