From cecea8053a8e394994a8f85765a7be07b0da394f Mon Sep 17 00:00:00 2001
From: Dmitrii Stepanov <d.stepanov@yadro.com>
Date: Mon, 3 Apr 2023 13:09:44 +0300
Subject: [PATCH] [#199] putsvc: Refactor streamer pool

Resolve staticcheck linter for putBytesPool

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
---
 pkg/services/object/put/distributed.go |  6 +++---
 pkg/services/object/put/pool.go        | 16 ++++++++++------
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/pkg/services/object/put/distributed.go b/pkg/services/object/put/distributed.go
index 3b5f4ec53..e4566157e 100644
--- a/pkg/services/object/put/distributed.go
+++ b/pkg/services/object/put/distributed.go
@@ -28,7 +28,7 @@ type distributedTarget struct {
 	obj     *objectSDK.Object
 	objMeta object.ContentMeta
 
-	payload []byte
+	payload *payload
 
 	nodeTargetInitializer func(nodeDesc) preparedObjectTarget
 
@@ -122,7 +122,7 @@ func (t *distributedTarget) WriteHeader(obj *objectSDK.Object) error {
 }
 
 func (t *distributedTarget) Write(p []byte) (n int, err error) {
-	t.payload = append(t.payload, p...)
+	t.payload.Data = append(t.payload.Data, p...)
 
 	return len(p), nil
 }
@@ -133,7 +133,7 @@ func (t *distributedTarget) Close() (*transformer.AccessIdentifiers, error) {
 		t.payload = nil
 	}()
 
-	t.obj.SetPayload(t.payload)
+	t.obj.SetPayload(t.payload.Data)
 
 	var err error
 
diff --git a/pkg/services/object/put/pool.go b/pkg/services/object/put/pool.go
index 705273227..5726856e5 100644
--- a/pkg/services/object/put/pool.go
+++ b/pkg/services/object/put/pool.go
@@ -6,15 +6,19 @@ import (
 
 const defaultAllocSize = 1024
 
+type payload struct {
+	Data []byte
+}
+
 var putBytesPool = &sync.Pool{
-	New: func() any { return make([]byte, 0, defaultAllocSize) },
+	New: func() any { return &payload{Data: make([]byte, 0, defaultAllocSize)} },
 }
 
-func getPayload() []byte {
-	return putBytesPool.Get().([]byte)
+func getPayload() *payload {
+	return putBytesPool.Get().(*payload)
 }
 
-func putPayload(p []byte) {
-	//nolint:staticcheck
-	putBytesPool.Put(p[:0])
+func putPayload(p *payload) {
+	p.Data = p.Data[:0]
+	putBytesPool.Put(p)
 }