Skip to content

Commit

Permalink
neofs: Use smaller buffer for small payload
Browse files Browse the repository at this point in the history
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
  • Loading branch information
smallhive committed Sep 4, 2024
1 parent ad10aa7 commit 0730292
Showing 1 changed file with 33 additions and 6 deletions.
39 changes: 33 additions & 6 deletions internal/neofs/neofs.go
Original file line number Diff line number Diff line change
Expand Up @@ -335,8 +335,20 @@ func (x *NeoFS) CreateObject(ctx context.Context, prm layer.PrmObjectCreate) (oi
opts.SetCurrentNeoFSEpoch(x.epochGetter.CurrentEpoch())
opts.SetPayloadSize(prm.PayloadSize)

data := x.buffers.Get()
chunk := data.(*[]byte)
var (
chunk *[]byte
returnToPool bool
)

if prm.PayloadSize > 0 && prm.PayloadSize < uint64(x.MaxObjectSize()) {
c := make([]byte, prm.PayloadSize)
chunk = &c
} else {
data := x.buffers.Get()
chunk = data.(*[]byte)
returnToPool = true
}

opts.SetPayloadBuffer(*chunk)

if x.cfg.IsHomomorphicEnabled {
Expand All @@ -348,7 +360,9 @@ func (x *NeoFS) CreateObject(ctx context.Context, prm layer.PrmObjectCreate) (oi
}

objID, err := slicer.Put(ctx, x.pool, obj, x.signer(ctx), prm.Payload, opts)
x.buffers.Put(chunk)
if returnToPool {
x.buffers.Put(chunk)
}

if err != nil {
return oid.ID{}, fmt.Errorf("slicer put: %w", err)
Expand All @@ -373,11 +387,24 @@ func (x *NeoFS) CreateObject(ctx context.Context, prm layer.PrmObjectCreate) (oi
return oid.ID{}, fmt.Errorf("put init: %w", err)
}

data := x.buffers.Get()
chunk := data.(*[]byte)
var (
chunk *[]byte
returnToPool bool
)

if prm.PayloadSize > 0 && prm.PayloadSize < uint64(x.MaxObjectSize()) {
c := make([]byte, prm.PayloadSize)
chunk = &c
} else {
data := x.buffers.Get()
chunk = data.(*[]byte)
returnToPool = true
}

_, err = io.CopyBuffer(writer, prm.Payload, *chunk)
x.buffers.Put(chunk)
if returnToPool {
x.buffers.Put(chunk)
}

if err != nil {
return oid.ID{}, fmt.Errorf("copy payload with buffer: %w", err)
Expand Down

0 comments on commit 0730292

Please sign in to comment.