From 4ea03c01b52ff750082835cef57a21fdb4a367e0 Mon Sep 17 00:00:00 2001
From: Evgenii Stratonikov <evgeniy@nspcc.ru>
Date: Thu, 28 Apr 2022 10:18:14 +0300
Subject: [PATCH] [#1319] services/object: Store payload directly in
 `distributedTarget`

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
---
 pkg/services/object/put/distributed.go | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

diff --git a/pkg/services/object/put/distributed.go b/pkg/services/object/put/distributed.go
index 1d80a5025..9580cb273 100644
--- a/pkg/services/object/put/distributed.go
+++ b/pkg/services/object/put/distributed.go
@@ -22,7 +22,7 @@ type distributedTarget struct {
 
 	obj *objectSDK.Object
 
-	chunks [][]byte
+	payload []byte
 
 	nodeTargetInitializer func(nodeDesc) transformer.ObjectTarget
 
@@ -107,25 +107,13 @@ func (t *distributedTarget) WriteHeader(obj *objectSDK.Object) error {
 }
 
 func (t *distributedTarget) Write(p []byte) (n int, err error) {
-	t.chunks = append(t.chunks, p)
+	t.payload = append(t.payload, p...)
 
 	return len(p), nil
 }
 
 func (t *distributedTarget) Close() (*transformer.AccessIdentifiers, error) {
-	sz := 0
-
-	for i := range t.chunks {
-		sz += len(t.chunks[i])
-	}
-
-	payload := make([]byte, 0, sz)
-
-	for i := range t.chunks {
-		payload = append(payload, t.chunks[i]...)
-	}
-
-	t.obj.SetPayload(payload)
+	t.obj.SetPayload(t.payload)
 
 	if err := t.fmt.ValidateContent(t.obj); err != nil {
 		return nil, fmt.Errorf("(%T) could not validate payload content: %w", t, err)