[#1418] shard: Do not use pointers as parameters

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2022-05-20 21:08:59 +03:00 committed by fyrchik
parent e265ce2d52
commit 6e752f36dc
39 changed files with 205 additions and 161 deletions

View file

@ -47,8 +47,8 @@ func (e *StorageEngine) delete(prm *DeletePrm) (*DeleteRes, error) {
defer elapsed(e.metrics.AddDeleteDuration)()
}
shPrm := new(shard.InhumePrm)
existsPrm := new(shard.ExistsPrm)
var shPrm shard.InhumePrm
var existsPrm shard.ExistsPrm
var locked struct {
is bool
err apistatus.ObjectLocked
@ -56,7 +56,9 @@ func (e *StorageEngine) delete(prm *DeletePrm) (*DeleteRes, error) {
for i := range prm.addr {
e.iterateOverSortedShards(prm.addr[i], func(_ int, sh hashedShard) (stop bool) {
resExists, err := sh.Exists(existsPrm.WithAddress(prm.addr[i]))
existsPrm.WithAddress(prm.addr[i])
resExists, err := sh.Exists(existsPrm)
if err != nil {
e.reportShardError(sh, "could not check object existence", err)
return false
@ -64,7 +66,9 @@ func (e *StorageEngine) delete(prm *DeletePrm) (*DeleteRes, error) {
return false
}
_, err = sh.Inhume(shPrm.MarkAsGarbage(prm.addr[i]))
shPrm.MarkAsGarbage(prm.addr[i])
_, err = sh.Inhume(shPrm)
if err != nil {
e.reportShardError(sh, "could not inhume object in shard", err)

View file

@ -5,7 +5,7 @@ import "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
// DumpShard dumps objects from the shard with provided identifier.
//
// Returns an error if shard is not read-only.
func (e *StorageEngine) DumpShard(id *shard.ID, prm *shard.DumpPrm) error {
func (e *StorageEngine) DumpShard(id *shard.ID, prm shard.DumpPrm) error {
e.mtx.RLock()
defer e.mtx.RUnlock()

View file

@ -64,7 +64,8 @@ func TestErrorReporting(t *testing.T) {
obj := generateObjectWithCID(t, cidtest.ID())
obj.SetPayload(make([]byte, errSmallSize))
prm := new(shard.PutPrm).WithObject(obj)
var prm shard.PutPrm
prm.WithObject(obj)
e.mtx.RLock()
_, err := e.shards[id[0].String()].Shard.Put(prm)
e.mtx.RUnlock()
@ -93,7 +94,8 @@ func TestErrorReporting(t *testing.T) {
obj := generateObjectWithCID(t, cidtest.ID())
obj.SetPayload(make([]byte, errSmallSize))
prm := new(shard.PutPrm).WithObject(obj)
var prm shard.PutPrm
prm.WithObject(obj)
e.mtx.RLock()
_, err := e.shards[id[0].String()].Put(prm)
e.mtx.RUnlock()
@ -142,7 +144,8 @@ func TestBlobstorFailback(t *testing.T) {
obj := generateObjectWithCID(t, cidtest.ID())
obj.SetPayload(make([]byte, size))
prm := new(shard.PutPrm).WithObject(obj)
var prm shard.PutPrm
prm.WithObject(obj)
e.mtx.RLock()
_, err = e.shards[id[0].String()].Shard.Put(prm)
e.mtx.RUnlock()

View file

@ -7,7 +7,8 @@ import (
)
func (e *StorageEngine) exists(addr oid.Address) (bool, error) {
shPrm := new(shard.ExistsPrm).WithAddress(addr)
var shPrm shard.ExistsPrm
shPrm.WithAddress(addr)
alreadyRemoved := false
exists := false

View file

@ -73,8 +73,8 @@ func (e *StorageEngine) get(prm *GetPrm) (*GetRes, error) {
metaError error
)
shPrm := new(shard.GetPrm).
WithAddress(prm.addr)
var shPrm shard.GetPrm
shPrm.WithAddress(prm.addr)
e.iterateOverSortedShards(prm.addr, func(_ int, sh hashedShard) (stop bool) {
res, err := sh.Get(shPrm)
@ -131,7 +131,7 @@ func (e *StorageEngine) get(prm *GetPrm) (*GetRes, error) {
// If the object is not found but is present in metabase,
// try to fetch it from blobstor directly. If it is found in any
// blobstor, increase the error counter for the shard which contains the meta.
shPrm = shPrm.WithIgnoreMeta(true)
shPrm.WithIgnoreMeta(true)
e.iterateOverSortedShards(prm.addr, func(_ int, sh hashedShard) (stop bool) {
res, err := sh.Get(shPrm)

View file

@ -83,9 +83,9 @@ func (e *StorageEngine) head(prm *HeadPrm) (*HeadRes, error) {
outError error = errNotFound
)
shPrm := new(shard.HeadPrm).
WithAddress(prm.addr).
WithRaw(prm.raw)
var shPrm shard.HeadPrm
shPrm.WithAddress(prm.addr)
shPrm.WithRaw(prm.raw)
e.iterateOverSortedShards(prm.addr, func(_ int, sh hashedShard) (stop bool) {
res, err := sh.Head(shPrm)

View file

@ -46,8 +46,11 @@ func TestHeadRaw(t *testing.T) {
e := testNewEngineWithShards(s1, s2)
defer e.Close()
putPrmLeft := new(shard.PutPrm).WithObject(child)
putPrmLink := new(shard.PutPrm).WithObject(link)
var putPrmLeft shard.PutPrm
putPrmLeft.WithObject(child)
var putPrmLink shard.PutPrm
putPrmLink.WithObject(link)
// put most left object in one shard
_, err := s1.Put(putPrmLeft)

View file

@ -69,7 +69,7 @@ func (e *StorageEngine) inhume(prm *InhumePrm) (*InhumeRes, error) {
defer elapsed(e.metrics.AddInhumeDuration)()
}
shPrm := new(shard.InhumePrm)
var shPrm shard.InhumePrm
for i := range prm.addrs {
if prm.tombstone != nil {
@ -98,9 +98,10 @@ func (e *StorageEngine) inhume(prm *InhumePrm) (*InhumeRes, error) {
// 0 - fail
// 1 - object locked
// 2 - ok
func (e *StorageEngine) inhumeAddr(addr oid.Address, prm *shard.InhumePrm, checkExists bool) (status uint8) {
func (e *StorageEngine) inhumeAddr(addr oid.Address, prm shard.InhumePrm, checkExists bool) (status uint8) {
root := false
var errLocked apistatus.ObjectLocked
var existPrm shard.ExistsPrm
e.iterateOverSortedShards(addr, func(_ int, sh hashedShard) (stop bool) {
defer func() {
@ -112,9 +113,8 @@ func (e *StorageEngine) inhumeAddr(addr oid.Address, prm *shard.InhumePrm, check
}()
if checkExists {
exRes, err := sh.Exists(new(shard.ExistsPrm).
WithAddress(addr),
)
existPrm.WithAddress(addr)
exRes, err := sh.Exists(existPrm)
if err != nil {
if shard.IsErrRemoved(err) {
// inhumed once - no need to be inhumed again

View file

@ -59,11 +59,13 @@ func TestStorageEngine_Inhume(t *testing.T) {
e := testNewEngineWithShards(s1, s2)
defer e.Close()
putChild := new(shard.PutPrm).WithObject(child)
var putChild shard.PutPrm
putChild.WithObject(child)
_, err := s1.Put(putChild)
require.NoError(t, err)
putLink := new(shard.PutPrm).WithObject(link)
var putLink shard.PutPrm
putLink.WithObject(link)
_, err = s2.Put(putLink)
require.NoError(t, err)

View file

@ -104,7 +104,8 @@ func (e *StorageEngine) ListWithCursor(prm *ListWithCursorPrm) (*ListWithCursorR
}
count := uint32(int(prm.count) - len(result))
shardPrm := new(shard.ListWithCursorPrm).WithCount(count)
var shardPrm shard.ListWithCursorPrm
shardPrm.WithCount(count)
if shardIDs[i] == cursor.shardID {
shardPrm.WithCursor(cursor.shardCursor)
}

View file

@ -65,9 +65,10 @@ func (e *StorageEngine) lockSingle(idCnr cid.ID, locker, locked oid.ID, checkExi
}()
if checkExists {
exRes, err := sh.Exists(new(shard.ExistsPrm).
WithAddress(addrLocked),
)
var existsPrm shard.ExistsPrm
existsPrm.WithAddress(addrLocked)
exRes, err := sh.Exists(existsPrm)
if err != nil {
var siErr *objectSDK.SplitInfoError
if !errors.As(err, &siErr) {

View file

@ -61,7 +61,7 @@ func (e *StorageEngine) put(prm *PutPrm) (*PutRes, error) {
return nil, err
}
existPrm := new(shard.ExistsPrm)
var existPrm shard.ExistsPrm
existPrm.WithAddress(addr)
finished := false
@ -83,7 +83,7 @@ func (e *StorageEngine) put(prm *PutPrm) (*PutRes, error) {
if exists.Exists() {
if ind != 0 {
toMoveItPrm := new(shard.ToMoveItPrm)
var toMoveItPrm shard.ToMoveItPrm
toMoveItPrm.WithAddress(addr)
_, err = sh.ToMoveIt(toMoveItPrm)
@ -100,7 +100,7 @@ func (e *StorageEngine) put(prm *PutPrm) (*PutRes, error) {
return
}
putPrm := new(shard.PutPrm)
var putPrm shard.PutPrm
putPrm.WithObject(prm.obj)
_, err = sh.Put(putPrm)

View file

@ -91,9 +91,9 @@ func (e *StorageEngine) getRange(prm *RngPrm) (*RngRes, error) {
metaError error
)
shPrm := new(shard.RngPrm).
WithAddress(prm.addr).
WithRange(prm.off, prm.ln)
var shPrm shard.RngPrm
shPrm.WithAddress(prm.addr)
shPrm.WithRange(prm.off, prm.ln)
e.iterateOverSortedShards(prm.addr, func(_ int, sh hashedShard) (stop bool) {
res, err := sh.GetRange(shPrm)
@ -152,7 +152,7 @@ func (e *StorageEngine) getRange(prm *RngPrm) (*RngRes, error) {
// If the object is not found but is present in metabase,
// try to fetch it from blobstor directly. If it is found in any
// blobstor, increase the error counter for the shard which contains the meta.
shPrm = shPrm.WithIgnoreMeta(true)
shPrm.WithIgnoreMeta(true)
e.iterateOverSortedShards(prm.addr, func(_ int, sh hashedShard) (stop bool) {
res, err := sh.GetRange(shPrm)

View file

@ -5,7 +5,7 @@ import "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
// RestoreShard restores objects from dump to the shard with provided identifier.
//
// Returns an error if shard is not read-only.
func (e *StorageEngine) RestoreShard(id *shard.ID, prm *shard.RestorePrm) error {
func (e *StorageEngine) RestoreShard(id *shard.ID, prm shard.RestorePrm) error {
e.mtx.RLock()
defer e.mtx.RUnlock()

View file

@ -65,9 +65,9 @@ func (e *StorageEngine) _select(prm *SelectPrm) (*SelectRes, error) {
var outError error
shPrm := new(shard.SelectPrm).
WithContainerID(prm.cnr).
WithFilters(prm.filters)
var shPrm shard.SelectPrm
shPrm.WithContainerID(prm.cnr)
shPrm.WithFilters(prm.filters)
e.iterateOverUnsortedShards(func(sh hashedShard) (stop bool) {
res, err := sh.Select(shPrm)