forked from TrueCloudLab/frostfs-node
[#291] Remove some unused code from repository
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
a51211eda7
commit
9a86fff7e0
23 changed files with 14 additions and 399 deletions
|
@ -220,9 +220,6 @@ func completeBearerToken(btok *token.BearerToken) error {
|
||||||
// set eACL table version, because it usually omitted
|
// set eACL table version, because it usually omitted
|
||||||
table := v2.GetBody().GetEACL()
|
table := v2.GetBody().GetEACL()
|
||||||
table.SetVersion(pkg.SDKVersion().ToV2())
|
table.SetVersion(pkg.SDKVersion().ToV2())
|
||||||
|
|
||||||
// back to SDK token
|
|
||||||
btok = token.NewBearerTokenFromV2(v2)
|
|
||||||
} else {
|
} else {
|
||||||
return errors.New("unsupported bearer token version")
|
return errors.New("unsupported bearer token version")
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,6 @@ import (
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/core/container"
|
"github.com/nspcc-dev/neofs-node/pkg/core/container"
|
||||||
netmapCore "github.com/nspcc-dev/neofs-node/pkg/core/netmap"
|
netmapCore "github.com/nspcc-dev/neofs-node/pkg/core/netmap"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor"
|
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/bucket"
|
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/bucket/fsbucket"
|
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/engine"
|
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/engine"
|
||||||
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
|
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
|
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/shard"
|
||||||
|
@ -562,26 +560,6 @@ func configPath(sections ...string) string {
|
||||||
return strings.Join(sections, ".")
|
return strings.Join(sections, ".")
|
||||||
}
|
}
|
||||||
|
|
||||||
func initBucket(prefix string, c *cfg) (bucket bucket.Bucket, err error) {
|
|
||||||
const inmemory = "inmemory"
|
|
||||||
|
|
||||||
switch c.viper.GetString(prefix + ".type") {
|
|
||||||
case inmemory:
|
|
||||||
bucket = newBucket()
|
|
||||||
c.log.Info("using in-memory bucket", zap.String("storage", prefix))
|
|
||||||
case fsbucket.Name:
|
|
||||||
bucket, err = fsbucket.NewBucket(prefix, c.viper)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "can't create fs bucket")
|
|
||||||
}
|
|
||||||
c.log.Info("using filesystem bucket", zap.String("storage", prefix))
|
|
||||||
default:
|
|
||||||
return nil, errors.New("unknown storage type")
|
|
||||||
}
|
|
||||||
|
|
||||||
return bucket, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func initObjectPool(cfg *viper.Viper) (pool cfgObjectRoutines) {
|
func initObjectPool(cfg *viper.Viper) (pool cfgObjectRoutines) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,9 @@ func initGRPC(c *cfg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func serveGRPC(c *cfg) {
|
func serveGRPC(c *cfg) {
|
||||||
|
c.wg.Add(1)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
c.wg.Add(1)
|
|
||||||
defer func() {
|
defer func() {
|
||||||
c.wg.Done()
|
c.wg.Done()
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -2,17 +2,13 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/mr-tron/base58"
|
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/client"
|
"github.com/nspcc-dev/neofs-api-go/pkg/client"
|
||||||
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/owner"
|
"github.com/nspcc-dev/neofs-api-go/pkg/owner"
|
||||||
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
||||||
objectGRPC "github.com/nspcc-dev/neofs-api-go/v2/object/grpc"
|
objectGRPC "github.com/nspcc-dev/neofs-api-go/v2/object/grpc"
|
||||||
objectCore "github.com/nspcc-dev/neofs-node/pkg/core/object"
|
objectCore "github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/bucket"
|
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/engine"
|
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/engine"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
|
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/network/cache"
|
"github.com/nspcc-dev/neofs-node/pkg/network/cache"
|
||||||
|
@ -48,12 +44,6 @@ type objectSvc struct {
|
||||||
delete *deletesvcV2.Service
|
delete *deletesvcV2.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
type inMemBucket struct {
|
|
||||||
bucket.Bucket
|
|
||||||
*sync.RWMutex
|
|
||||||
items map[string][]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cfg) MaxObjectSize() uint64 {
|
func (c *cfg) MaxObjectSize() uint64 {
|
||||||
sz, err := c.cfgNetmap.wrapper.MaxObjectSize()
|
sz, err := c.cfgNetmap.wrapper.MaxObjectSize()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -65,73 +55,6 @@ func (c *cfg) MaxObjectSize() uint64 {
|
||||||
return sz
|
return sz
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBucket() bucket.Bucket {
|
|
||||||
return &inMemBucket{
|
|
||||||
RWMutex: new(sync.RWMutex),
|
|
||||||
items: map[string][]byte{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *inMemBucket) Del(key []byte) error {
|
|
||||||
b.Lock()
|
|
||||||
delete(b.items, base58.Encode(key))
|
|
||||||
b.Unlock()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *inMemBucket) Get(key []byte) ([]byte, error) {
|
|
||||||
b.RLock()
|
|
||||||
v, ok := b.items[base58.Encode(key)]
|
|
||||||
b.RUnlock()
|
|
||||||
|
|
||||||
if !ok {
|
|
||||||
return nil, errors.New("not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
return v, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *inMemBucket) Set(key, value []byte) error {
|
|
||||||
k := base58.Encode(key)
|
|
||||||
|
|
||||||
b.Lock()
|
|
||||||
b.items[k] = makeCopy(value)
|
|
||||||
b.Unlock()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *inMemBucket) Iterate(handler bucket.FilterHandler) error {
|
|
||||||
if handler == nil {
|
|
||||||
return bucket.ErrNilFilterHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
b.RLock()
|
|
||||||
for key, val := range b.items {
|
|
||||||
k, err := base58.Decode(key)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
v := makeCopy(val)
|
|
||||||
|
|
||||||
if !handler(k, v) {
|
|
||||||
return bucket.ErrIteratingAborted
|
|
||||||
}
|
|
||||||
}
|
|
||||||
b.RUnlock()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func makeCopy(val []byte) []byte {
|
|
||||||
tmp := make([]byte, len(val))
|
|
||||||
copy(tmp, val)
|
|
||||||
|
|
||||||
return tmp
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *objectSvc) Put(ctx context.Context) (object.PutObjectStreamer, error) {
|
func (s *objectSvc) Put(ctx context.Context) (object.PutObjectStreamer, error) {
|
||||||
return s.put.Put(ctx)
|
return s.put.Put(ctx)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,4 +25,3 @@ var (
|
||||||
// Debug is an application debug mode flag.
|
// Debug is an application debug mode flag.
|
||||||
Debug = "false"
|
Debug = "false"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package netmap
|
package netmap
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
|
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
|
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -21,9 +19,6 @@ type Source interface {
|
||||||
GetNetMap(diff uint64) (*netmap.Netmap, error)
|
GetNetMap(diff uint64) (*netmap.Netmap, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrNotFound is the error returned when network map was not found in storage.
|
|
||||||
var ErrNotFound = errors.New("network map not found")
|
|
||||||
|
|
||||||
// GetLatestNetworkMap requests and returns latest network map from storage.
|
// GetLatestNetworkMap requests and returns latest network map from storage.
|
||||||
func GetLatestNetworkMap(src Source) (*netmap.Netmap, error) {
|
func GetLatestNetworkMap(src Source) (*netmap.Netmap, error) {
|
||||||
return src.GetNetMap(0)
|
return src.GetNetMap(0)
|
||||||
|
|
|
@ -60,14 +60,12 @@ type (
|
||||||
}
|
}
|
||||||
|
|
||||||
contracts struct {
|
contracts struct {
|
||||||
neofs util.Uint160 // in mainnet
|
neofs util.Uint160 // in mainnet
|
||||||
netmap util.Uint160 // in morph
|
netmap util.Uint160 // in morph
|
||||||
balance util.Uint160 // in morph
|
balance util.Uint160 // in morph
|
||||||
container util.Uint160 // in morph
|
container util.Uint160 // in morph
|
||||||
audit util.Uint160 // in morph
|
audit util.Uint160 // in morph
|
||||||
reputation util.Uint160 // in morph
|
gas util.Uint160 // native contract in both chains
|
||||||
neofsid util.Uint160 // in morph
|
|
||||||
gas util.Uint160 // native contract in both chains
|
|
||||||
|
|
||||||
alphabet [alphabetContractsN]util.Uint160 // in morph
|
alphabet [alphabetContractsN]util.Uint160 // in morph
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
// TransferXParams for TransferBalanceX invocation.
|
|
||||||
TransferXParams struct {
|
|
||||||
Sender []byte
|
|
||||||
Receiver []byte
|
|
||||||
Amount int64 // in Fixed16
|
|
||||||
Comment []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// LockParams for LockAsset invocation.
|
// LockParams for LockAsset invocation.
|
||||||
LockParams struct {
|
LockParams struct {
|
||||||
ID []byte
|
ID []byte
|
||||||
|
@ -39,20 +31,6 @@ const (
|
||||||
precisionMethod = "decimals"
|
precisionMethod = "decimals"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TransferBalanceX invokes transferX method.
|
|
||||||
func TransferBalanceX(cli *client.Client, con util.Uint160, p *TransferXParams) error {
|
|
||||||
if cli == nil {
|
|
||||||
return client.ErrNilClient
|
|
||||||
}
|
|
||||||
|
|
||||||
return cli.Invoke(con, extraFee, transferXMethod,
|
|
||||||
p.Sender,
|
|
||||||
p.Receiver,
|
|
||||||
p.Amount,
|
|
||||||
p.Comment,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mint assets in contract.
|
// Mint assets in contract.
|
||||||
func Mint(cli *client.Client, con util.Uint160, p *MintBurnParams) error {
|
func Mint(cli *client.Client, con util.Uint160, p *MintBurnParams) error {
|
||||||
if cli == nil {
|
if cli == nil {
|
||||||
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/util"
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/morph/client"
|
"github.com/nspcc-dev/neofs-node/pkg/morph/client"
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
@ -22,8 +21,6 @@ type (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
var ErrParseTestInvoke = errors.New("can't parse NEO node response")
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
putContainerMethod = "put"
|
putContainerMethod = "put"
|
||||||
deleteContainerMethod = "delete"
|
deleteContainerMethod = "delete"
|
||||||
|
|
|
@ -39,27 +39,6 @@ const (
|
||||||
chequeMethod = "cheque"
|
chequeMethod = "cheque"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IsInnerRing returns true if 'key' is presented in inner ring list.
|
|
||||||
func IsInnerRing(cli *client.Client, con util.Uint160, key *ecdsa.PublicKey) (bool, error) {
|
|
||||||
if cli == nil {
|
|
||||||
return false, client.ErrNilClient
|
|
||||||
}
|
|
||||||
|
|
||||||
pubKey := crypto.MarshalPublicKey(key)
|
|
||||||
|
|
||||||
val, err := cli.TestInvoke(con, checkIsInnerRingMethod, pubKey)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
isInnerRing, err := client.BoolFromStackItem(val[0])
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return isInnerRing, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// CashOutCheque invokes Cheque method.
|
// CashOutCheque invokes Cheque method.
|
||||||
func CashOutCheque(cli *client.Client, con util.Uint160, p *ChequeParams) error {
|
func CashOutCheque(cli *client.Client, con util.Uint160, p *ChequeParams) error {
|
||||||
if cli == nil {
|
if cli == nil {
|
||||||
|
|
|
@ -7,11 +7,14 @@ import (
|
||||||
|
|
||||||
func (ap *Processor) handleNewAuditRound(ev event.Event) {
|
func (ap *Processor) handleNewAuditRound(ev event.Event) {
|
||||||
auditEvent := ev.(Start)
|
auditEvent := ev.(Start)
|
||||||
ap.log.Info("new round of audit", zap.Uint64("epoch", auditEvent.epoch))
|
|
||||||
|
epoch := auditEvent.Epoch()
|
||||||
|
|
||||||
|
ap.log.Info("new round of audit", zap.Uint64("epoch", epoch))
|
||||||
|
|
||||||
// send event to the worker pool
|
// send event to the worker pool
|
||||||
|
|
||||||
err := ap.pool.Submit(func() { ap.processStartAudit(auditEvent.epoch) })
|
err := ap.pool.Submit(func() { ap.processStartAudit(epoch) })
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ap.log.Warn("previous round of audit prepare hasn't finished yet")
|
ap.log.Warn("previous round of audit prepare hasn't finished yet")
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,10 +101,3 @@ func WithLogger(l *logger.Logger) Option {
|
||||||
c.log = l.With(zap.String("component", "Blobovnicza"))
|
c.log = l.With(zap.String("component", "Blobovnicza"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithBoltDBOptions returns option to specify BoltDB options.
|
|
||||||
func WithBoltDBOptions(opts *bbolt.Options) Option {
|
|
||||||
return func(c *cfg) {
|
|
||||||
c.boltOptions = opts
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -34,26 +34,6 @@ func testAddress() *objectSDK.Address {
|
||||||
return addr
|
return addr
|
||||||
}
|
}
|
||||||
|
|
||||||
func testObject(sz uint64) *object.Object {
|
|
||||||
raw := object.NewRaw()
|
|
||||||
|
|
||||||
addr := testAddress()
|
|
||||||
raw.SetID(addr.ObjectID())
|
|
||||||
raw.SetContainerID(addr.ContainerID())
|
|
||||||
|
|
||||||
raw.SetPayload(make([]byte, sz))
|
|
||||||
|
|
||||||
// fit the binary size to the required
|
|
||||||
data, _ := raw.Marshal()
|
|
||||||
if ln := uint64(len(data)); ln > sz {
|
|
||||||
raw.SetPayload(raw.Payload()[:sz-(ln-sz)])
|
|
||||||
}
|
|
||||||
|
|
||||||
raw.SetAttributes() // for require.Equal
|
|
||||||
|
|
||||||
return raw.Object()
|
|
||||||
}
|
|
||||||
|
|
||||||
func testPutGet(t *testing.T, blz *Blobovnicza, sz uint64, expPut, expGet error) *objectSDK.Address {
|
func testPutGet(t *testing.T, blz *Blobovnicza, sz uint64, expPut, expGet error) *objectSDK.Address {
|
||||||
// create binary object
|
// create binary object
|
||||||
data := make([]byte, sz)
|
data := make([]byte, sz)
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net"
|
|
||||||
|
|
||||||
"github.com/multiformats/go-multiaddr"
|
|
||||||
manet "github.com/multiformats/go-multiaddr-net"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Listen announces on the local network address.
|
|
||||||
func Listen(addr multiaddr.Multiaddr) (net.Listener, error) {
|
|
||||||
mLis, err := manet.Listen(addr)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return manet.NetListener(mLis), nil
|
|
||||||
}
|
|
|
@ -27,8 +27,6 @@ type cfg struct {
|
||||||
|
|
||||||
ctxPrm auditor.ContextPrm
|
ctxPrm auditor.ContextPrm
|
||||||
|
|
||||||
reporter audit.Reporter
|
|
||||||
|
|
||||||
workerPool util.WorkerPool
|
workerPool util.WorkerPool
|
||||||
|
|
||||||
pdpPoolGenerator, porPoolGenerator func() (util.WorkerPool, error)
|
pdpPoolGenerator, porPoolGenerator func() (util.WorkerPool, error)
|
||||||
|
|
|
@ -113,7 +113,6 @@ type accessErr struct {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrMalformedRequest = errors.New("malformed request")
|
ErrMalformedRequest = errors.New("malformed request")
|
||||||
ErrInternal = errors.New("internal error")
|
|
||||||
ErrUnknownRole = errors.New("can't classify request sender")
|
ErrUnknownRole = errors.New("can't classify request sender")
|
||||||
ErrUnknownContainer = errors.New("can't fetch container info")
|
ErrUnknownContainer = errors.New("can't fetch container info")
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,9 +2,7 @@ package deletesvc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/ecdsa"
|
|
||||||
|
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/client"
|
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/container"
|
"github.com/nspcc-dev/neofs-api-go/pkg/container"
|
||||||
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||||
|
@ -59,10 +57,6 @@ func (exec execCtx) isLocal() bool {
|
||||||
return exec.prm.common.LocalOnly()
|
return exec.prm.common.LocalOnly()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (exec *execCtx) key() *ecdsa.PrivateKey {
|
|
||||||
return exec.prm.common.PrivateKey()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (exec *execCtx) address() *objectSDK.Address {
|
func (exec *execCtx) address() *objectSDK.Address {
|
||||||
return exec.prm.Address()
|
return exec.prm.Address()
|
||||||
}
|
}
|
||||||
|
@ -75,10 +69,6 @@ func (exec *execCtx) commonParameters() *util.CommonPrm {
|
||||||
return exec.prm.common
|
return exec.prm.common
|
||||||
}
|
}
|
||||||
|
|
||||||
func (exec execCtx) callOptions() []client.CallOption {
|
|
||||||
return exec.prm.common.RemoteCallOptions()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (exec *execCtx) newAddress(id *objectSDK.ID) *objectSDK.Address {
|
func (exec *execCtx) newAddress(id *objectSDK.ID) *objectSDK.Address {
|
||||||
a := objectSDK.NewAddress()
|
a := objectSDK.NewAddress()
|
||||||
a.SetObjectID(id)
|
a.SetObjectID(id)
|
||||||
|
|
|
@ -106,19 +106,6 @@ func (c *testClient) getObject(exec *execCtx) (*objectSDK.Object, error) {
|
||||||
return cutToRange(v.obj.Object(), exec.ctxRange()).SDK(), nil
|
return cutToRange(v.obj.Object(), exec.ctxRange()).SDK(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *testClient) head(_ context.Context, p Prm) (*object.Object, error) {
|
|
||||||
v, ok := c.results[p.Address().String()]
|
|
||||||
if !ok {
|
|
||||||
return nil, object.ErrNotFound
|
|
||||||
}
|
|
||||||
|
|
||||||
if v.err != nil {
|
|
||||||
return nil, v.err
|
|
||||||
}
|
|
||||||
|
|
||||||
return v.obj.CutPayload().Object(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *testClient) addResult(addr *objectSDK.Address, obj *object.RawObject, err error) {
|
func (c *testClient) addResult(addr *objectSDK.Address, obj *object.RawObject, err error) {
|
||||||
c.results[addr.String()] = struct {
|
c.results[addr.String()] = struct {
|
||||||
obj *object.RawObject
|
obj *object.RawObject
|
||||||
|
|
|
@ -104,9 +104,7 @@ func (c *clientWrapper) getObject(exec *execCtx) (*objectSDK.Object, error) {
|
||||||
return payloadOnlyObject(data), nil
|
return payloadOnlyObject(data), nil
|
||||||
} else {
|
} else {
|
||||||
return c.client.GetObject(exec.context(),
|
return c.client.GetObject(exec.context(),
|
||||||
new(client.GetObjectParams).
|
exec.remotePrm(),
|
||||||
WithAddress(exec.address()).
|
|
||||||
WithRawFlag(exec.isRaw()),
|
|
||||||
exec.callOptions()...,
|
exec.callOptions()...,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,6 @@ import (
|
||||||
|
|
||||||
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/services/util"
|
"github.com/nspcc-dev/neofs-node/pkg/services/util"
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
errChunking = errors.New("can't split message to stream chunks")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
@ -183,10 +178,3 @@ func (s *searchStreamMsgSizeCtrl) Send(resp *object.SearchResponse) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func min(a, b int) int {
|
|
||||||
if a > b {
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
|
|
|
@ -9,24 +9,6 @@ import (
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RangeTraverser struct {
|
|
||||||
chain *rangeChain
|
|
||||||
|
|
||||||
seekBounds *rangeBounds
|
|
||||||
}
|
|
||||||
|
|
||||||
type rangeBounds struct {
|
|
||||||
left, right uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
type rangeChain struct {
|
|
||||||
next, prev *rangeChain
|
|
||||||
|
|
||||||
bounds *rangeBounds
|
|
||||||
|
|
||||||
id *objectSDK.ID
|
|
||||||
}
|
|
||||||
|
|
||||||
// HeadReceiver is an interface of entity that can receive
|
// HeadReceiver is an interface of entity that can receive
|
||||||
// object header or the information about the object relations.
|
// object header or the information about the object relations.
|
||||||
type HeadReceiver interface {
|
type HeadReceiver interface {
|
||||||
|
@ -188,112 +170,3 @@ func traverseSplitChain(r HeadReceiver, addr *objectSDK.Address, h SplitMemberHa
|
||||||
|
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRangeTraverser(originSize uint64, rightElement *object.Object, rngSeek *objectSDK.Range) *RangeTraverser {
|
|
||||||
right := &rangeChain{
|
|
||||||
bounds: &rangeBounds{
|
|
||||||
left: originSize - rightElement.PayloadSize(),
|
|
||||||
right: originSize,
|
|
||||||
},
|
|
||||||
id: rightElement.ID(),
|
|
||||||
}
|
|
||||||
|
|
||||||
left := &rangeChain{
|
|
||||||
id: rightElement.PreviousID(),
|
|
||||||
}
|
|
||||||
|
|
||||||
left.next, right.prev = right, left
|
|
||||||
|
|
||||||
return &RangeTraverser{
|
|
||||||
chain: right,
|
|
||||||
seekBounds: &rangeBounds{
|
|
||||||
left: rngSeek.GetOffset(),
|
|
||||||
right: rngSeek.GetOffset() + rngSeek.GetLength(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *RangeTraverser) Next() (id *objectSDK.ID, rng *objectSDK.Range) {
|
|
||||||
left := c.chain.bounds.left
|
|
||||||
seekLeft := c.seekBounds.left
|
|
||||||
|
|
||||||
if left > seekLeft {
|
|
||||||
id = c.chain.prev.id
|
|
||||||
} else {
|
|
||||||
id = c.chain.id
|
|
||||||
rng = objectSDK.NewRange()
|
|
||||||
rng.SetOffset(seekLeft - left)
|
|
||||||
rng.SetLength(min(c.chain.bounds.right, c.seekBounds.right) - seekLeft)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func min(a, b uint64) uint64 {
|
|
||||||
if a < b {
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *RangeTraverser) PushHeader(obj *object.Object) {
|
|
||||||
id := obj.ID()
|
|
||||||
if !id.Equal(c.chain.prev.id) {
|
|
||||||
panic(fmt.Sprintf("(%T) unexpected identifier in header", c))
|
|
||||||
}
|
|
||||||
|
|
||||||
sz := obj.PayloadSize()
|
|
||||||
|
|
||||||
c.chain.prev.bounds = &rangeBounds{
|
|
||||||
left: c.chain.bounds.left - sz,
|
|
||||||
right: c.chain.bounds.left,
|
|
||||||
}
|
|
||||||
|
|
||||||
c.chain = c.chain.prev
|
|
||||||
|
|
||||||
if prev := obj.PreviousID(); prev != nil {
|
|
||||||
c.chain.prev = &rangeChain{
|
|
||||||
next: c.chain,
|
|
||||||
id: prev,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *RangeTraverser) PushSuccessSize(sz uint64) {
|
|
||||||
c.seekBounds.left += sz
|
|
||||||
|
|
||||||
if c.seekBounds.left >= c.chain.bounds.right && c.chain.next != nil {
|
|
||||||
c.chain = c.chain.next
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetSeekRange moves the chain to the specified range.
|
|
||||||
// The range is expected to be within the filled chain.
|
|
||||||
func (c *RangeTraverser) SetSeekRange(r *objectSDK.Range) {
|
|
||||||
ln, off := r.GetLength(), r.GetOffset()
|
|
||||||
|
|
||||||
for {
|
|
||||||
if off < c.chain.bounds.left {
|
|
||||||
if c.chain.prev == nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
c.chain = c.chain.prev
|
|
||||||
} else if off >= c.chain.bounds.left && off < c.chain.bounds.right {
|
|
||||||
break
|
|
||||||
} else if off >= c.chain.bounds.right {
|
|
||||||
if c.chain.next == nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
c.chain = c.chain.next
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.seekBounds == nil {
|
|
||||||
c.seekBounds = new(rangeBounds)
|
|
||||||
}
|
|
||||||
|
|
||||||
c.seekBounds.left, c.seekBounds.right = off, off+ln
|
|
||||||
}
|
|
||||||
|
|
|
@ -135,14 +135,3 @@ func stringifyID(addr *object.ID) string {
|
||||||
func stringifyCID(addr *container.ID) string {
|
func stringifyCID(addr *container.ID) string {
|
||||||
return base58.Encode(addr.ToV2().GetValue())
|
return base58.Encode(addr.ToV2().GetValue())
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteObjects adds list of adresses to delete queue.
|
|
||||||
func (gc *GC) DeleteObjects(list ...*object.Address) {
|
|
||||||
for i := range list {
|
|
||||||
select {
|
|
||||||
case gc.queue <- list[i]:
|
|
||||||
default:
|
|
||||||
gc.log.Info("queue for deletion is full")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -25,16 +25,6 @@ func testNode(v uint32) (n netmap.NodeInfo) {
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func flattenVectors(vs []netmap.Nodes) netmap.Nodes {
|
|
||||||
v := make(netmap.Nodes, 0)
|
|
||||||
|
|
||||||
for i := range vs {
|
|
||||||
v = append(v, vs[i]...)
|
|
||||||
}
|
|
||||||
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
|
|
||||||
func copyVectors(v []netmap.Nodes) []netmap.Nodes {
|
func copyVectors(v []netmap.Nodes) []netmap.Nodes {
|
||||||
vc := make([]netmap.Nodes, 0, len(v))
|
vc := make([]netmap.Nodes, 0, len(v))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue