forked from TrueCloudLab/frostfs-node
[#222] Move ErrAlreadyRemoved to core package
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
6a3e3e5642
commit
67d4b0db12
8 changed files with 18 additions and 31 deletions
|
@ -9,3 +9,6 @@ var ErrNotFound = errors.New("object not found")
|
|||
// ErrRangeOutOfBounds is a basic error of violation of the boundaries of the
|
||||
// payload of an object.
|
||||
var ErrRangeOutOfBounds = errors.New("payload range is out of bounds")
|
||||
|
||||
// ErrAlreadyRemoved returned when object has tombstone in graveyard.
|
||||
var ErrAlreadyRemoved = errors.New("object already removed")
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
|
||||
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase/v2"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -58,7 +57,7 @@ func (e *StorageEngine) Get(prm *GetPrm) (*GetRes, error) {
|
|||
switch {
|
||||
case errors.Is(err, object.ErrNotFound):
|
||||
return false // ignore, go to next shard
|
||||
case errors.Is(err, meta.ErrAlreadyRemoved):
|
||||
case errors.Is(err, object.ErrAlreadyRemoved):
|
||||
alreadyRemoved = true
|
||||
|
||||
return true // stop, return it back
|
||||
|
@ -81,7 +80,7 @@ func (e *StorageEngine) Get(prm *GetPrm) (*GetRes, error) {
|
|||
|
||||
if obj == nil {
|
||||
if alreadyRemoved {
|
||||
return nil, meta.ErrAlreadyRemoved
|
||||
return nil, object.ErrAlreadyRemoved
|
||||
}
|
||||
|
||||
return nil, object.ErrNotFound
|
||||
|
|
|
@ -4,7 +4,6 @@ import (
|
|||
"errors"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase/v2"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -43,7 +42,7 @@ func (e *StorageEngine) Put(prm *PutPrm) (*PutRes, error) {
|
|||
// todo: make this check parallel
|
||||
e.iterateOverUnsortedShards(func(s *shard.Shard) (stop bool) {
|
||||
_, err := s.Exists(existPrm)
|
||||
if err != nil && errors.Is(err, meta.ErrAlreadyRemoved) {
|
||||
if err != nil && errors.Is(err, object.ErrAlreadyRemoved) {
|
||||
alreadyRemoved = true
|
||||
|
||||
return true
|
||||
|
@ -53,7 +52,7 @@ func (e *StorageEngine) Put(prm *PutPrm) (*PutRes, error) {
|
|||
})
|
||||
|
||||
if alreadyRemoved {
|
||||
return nil, meta.ErrAlreadyRemoved
|
||||
return nil, object.ErrAlreadyRemoved
|
||||
}
|
||||
|
||||
finished := false
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
|
||||
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase/v2"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -75,7 +74,7 @@ func (e *StorageEngine) GetRange(prm *RngPrm) (*RngRes, error) {
|
|||
switch {
|
||||
case errors.Is(err, object.ErrNotFound):
|
||||
return false // ignore, go to next shard
|
||||
case errors.Is(err, meta.ErrAlreadyRemoved):
|
||||
case errors.Is(err, object.ErrAlreadyRemoved):
|
||||
alreadyRemoved = true
|
||||
|
||||
return true // stop, return it back
|
||||
|
@ -98,7 +97,7 @@ func (e *StorageEngine) GetRange(prm *RngPrm) (*RngRes, error) {
|
|||
|
||||
if obj == nil {
|
||||
if alreadyRemoved {
|
||||
return nil, meta.ErrAlreadyRemoved
|
||||
return nil, object.ErrAlreadyRemoved
|
||||
}
|
||||
|
||||
return nil, object.ErrNotFound
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
package meta
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
var (
|
||||
// ErrNotFound returned when object header should exist in primary index but
|
||||
// it is not present there.
|
||||
ErrNotFound = errors.New("address not found")
|
||||
|
||||
// ErrAlreadyRemoved returned when object has tombstone in graveyard.
|
||||
ErrAlreadyRemoved = errors.New("object already removed")
|
||||
)
|
|
@ -2,6 +2,7 @@ package meta
|
|||
|
||||
import (
|
||||
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||
"go.etcd.io/bbolt"
|
||||
)
|
||||
|
||||
|
@ -20,7 +21,7 @@ func (db *DB) Exists(addr *objectSDK.Address) (exists bool, err error) {
|
|||
func (db *DB) exists(tx *bbolt.Tx, addr *objectSDK.Address) (exists bool, err error) {
|
||||
// check graveyard first
|
||||
if inGraveyard(tx, addr) {
|
||||
return false, ErrAlreadyRemoved
|
||||
return false, object.ErrAlreadyRemoved
|
||||
}
|
||||
|
||||
objKey := objectKey(addr.ObjectID())
|
||||
|
|
|
@ -26,7 +26,7 @@ func (db *DB) get(tx *bbolt.Tx, addr *objectSDK.Address, checkGraveyard bool) (*
|
|||
cid := addr.ContainerID()
|
||||
|
||||
if checkGraveyard && inGraveyard(tx, addr) {
|
||||
return nil, ErrAlreadyRemoved
|
||||
return nil, object.ErrAlreadyRemoved
|
||||
}
|
||||
|
||||
// check in primary index
|
||||
|
@ -63,7 +63,7 @@ func getFromBucket(tx *bbolt.Tx, name, key []byte) []byte {
|
|||
func getVirtualObject(tx *bbolt.Tx, cid *container.ID, key []byte) (*object.Object, error) {
|
||||
parentBucket := tx.Bucket(parentBucketName(cid))
|
||||
if parentBucket == nil {
|
||||
return nil, ErrNotFound
|
||||
return nil, object.ErrNotFound
|
||||
}
|
||||
|
||||
relativeLst, err := decodeList(parentBucket.Get(key))
|
||||
|
@ -72,7 +72,7 @@ func getVirtualObject(tx *bbolt.Tx, cid *container.ID, key []byte) (*object.Obje
|
|||
}
|
||||
|
||||
if len(relativeLst) == 0 { // this should never happen though
|
||||
return nil, ErrNotFound
|
||||
return nil, object.ErrNotFound
|
||||
}
|
||||
|
||||
// pick last item, for now there is not difference which address to pick
|
||||
|
@ -89,7 +89,7 @@ func getVirtualObject(tx *bbolt.Tx, cid *container.ID, key []byte) (*object.Obje
|
|||
}
|
||||
|
||||
if child.GetParent() == nil { // this should never happen though
|
||||
return nil, ErrNotFound
|
||||
return nil, object.ErrNotFound
|
||||
}
|
||||
|
||||
return child.GetParent(), nil
|
||||
|
|
|
@ -3,7 +3,7 @@ package meta_test
|
|||
import (
|
||||
"testing"
|
||||
|
||||
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase/v2"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -23,8 +23,8 @@ func TestDB_Inhume(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
|
||||
_, err = db.Exists(raw.Object().Address())
|
||||
require.EqualError(t, err, meta.ErrAlreadyRemoved.Error())
|
||||
require.EqualError(t, err, object.ErrAlreadyRemoved.Error())
|
||||
|
||||
_, err = db.Get(raw.Object().Address())
|
||||
require.EqualError(t, err, meta.ErrAlreadyRemoved.Error())
|
||||
require.EqualError(t, err, object.ErrAlreadyRemoved.Error())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue