forked from TrueCloudLab/frostfs-node
[#1418] shard: Do not use pointers as parameters
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
e265ce2d52
commit
6e752f36dc
39 changed files with 205 additions and 161 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue