From 4b865a41de1c1f5bd878d868d7289cb65f9a6690 Mon Sep 17 00:00:00 2001 From: Evgenii Baidakov Date: Fri, 11 Aug 2023 12:24:35 +0400 Subject: [PATCH] neofs: Add maxObjectSize as parameter in constructor Signed-off-by: Evgenii Baidakov --- cmd/s3-authmate/main.go | 8 +++++++- cmd/s3-gw/app.go | 15 +++++++++++++-- internal/neofs/neofs.go | 23 ++++++++++------------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/cmd/s3-authmate/main.go b/cmd/s3-authmate/main.go index dcc8fca6..0297374a 100644 --- a/cmd/s3-authmate/main.go +++ b/cmd/s3-authmate/main.go @@ -23,6 +23,7 @@ import ( "github.com/nspcc-dev/neofs-s3-gw/internal/neofs" "github.com/nspcc-dev/neofs-s3-gw/internal/version" "github.com/nspcc-dev/neofs-s3-gw/internal/wallet" + "github.com/nspcc-dev/neofs-sdk-go/client" cid "github.com/nspcc-dev/neofs-sdk-go/container/id" "github.com/nspcc-dev/neofs-sdk-go/pool" "github.com/nspcc-dev/neofs-sdk-go/user" @@ -720,7 +721,12 @@ func createNeoFS(ctx context.Context, log *zap.Logger, cfg PoolConfig, anonSigne return nil, fmt.Errorf("dial pool: %w", err) } - neoFS := neofs.NewNeoFS(p, signer, anonSigner) + ni, err := p.NetworkInfo(ctx, client.PrmNetworkInfo{}) + if err != nil { + return nil, fmt.Errorf("networkInfo: %w", err) + } + + neoFS := neofs.NewNeoFS(p, signer, anonSigner, int64(ni.MaxObjectSize())) return neofs.NewAuthmateNeoFS(neoFS), nil } diff --git a/cmd/s3-gw/app.go b/cmd/s3-gw/app.go index e1dffaa1..5245ab51 100644 --- a/cmd/s3-gw/app.go +++ b/cmd/s3-gw/app.go @@ -25,6 +25,7 @@ import ( "github.com/nspcc-dev/neofs-s3-gw/internal/neofs" "github.com/nspcc-dev/neofs-s3-gw/internal/version" "github.com/nspcc-dev/neofs-s3-gw/internal/wallet" + "github.com/nspcc-dev/neofs-sdk-go/client" "github.com/nspcc-dev/neofs-sdk-go/netmap" "github.com/nspcc-dev/neofs-sdk-go/pool" "github.com/nspcc-dev/neofs-sdk-go/stat" @@ -99,7 +100,12 @@ func newApp(ctx context.Context, log *Logger, v *viper.Viper) *App { } anonSigner := user.NewAutoIDSignerRFC6979(anonKey.PrivateKey) - neoFS := neofs.NewNeoFS(conns, signer, anonSigner) + ni, err := conns.NetworkInfo(ctx, client.PrmNetworkInfo{}) + if err != nil { + log.logger.Fatal("newApp: networkInfo", zap.Error(err)) + } + + neoFS := neofs.NewNeoFS(conns, signer, anonSigner, int64(ni.MaxObjectSize())) // prepare auth center ctr := auth.New(neofs.NewAuthmateNeoFS(neoFS), key, v.GetStringSlice(cfgAllowedAccessKeyIDPrefixes), getAccessBoxCacheConfig(v, log.logger)) @@ -158,8 +164,13 @@ func (a *App) initLayer(ctx context.Context) { signer := user.NewAutoIDSignerRFC6979(a.gateKey.PrivateKey) + ni, err := a.pool.NetworkInfo(ctx, client.PrmNetworkInfo{}) + if err != nil { + a.log.Fatal("initLayer: networkInfo", zap.Error(err)) + } + // prepare object layer - a.obj = layer.NewLayer(a.log, neofs.NewNeoFS(a.pool, signer, anonSigner), layerCfg) + a.obj = layer.NewLayer(a.log, neofs.NewNeoFS(a.pool, signer, anonSigner, int64(ni.MaxObjectSize())), layerCfg) if a.cfg.GetBool(cfgEnableNATS) { nopts := getNotificationsOptions(a.cfg, a.log) diff --git a/internal/neofs/neofs.go b/internal/neofs/neofs.go index 67d6e266..8847c08a 100644 --- a/internal/neofs/neofs.go +++ b/internal/neofs/neofs.go @@ -34,17 +34,19 @@ import ( // It is used to provide an interface to dependent packages // which work with NeoFS. type NeoFS struct { - pool *pool.Pool - gateSigner user.Signer - anonSigner user.Signer + pool *pool.Pool + gateSigner user.Signer + anonSigner user.Signer + maxObjectSize int64 } // NewNeoFS creates new NeoFS using provided pool.Pool. -func NewNeoFS(p *pool.Pool, signer user.Signer, anonSigner user.Signer) *NeoFS { +func NewNeoFS(p *pool.Pool, signer user.Signer, anonSigner user.Signer, maxObjectSize int64) *NeoFS { return &NeoFS{ - pool: p, - gateSigner: signer, - anonSigner: anonSigner, + pool: p, + gateSigner: signer, + anonSigner: anonSigner, + maxObjectSize: maxObjectSize, } } @@ -214,11 +216,6 @@ func (x *NeoFS) DeleteContainer(ctx context.Context, id cid.ID, token *session.C // CreateObject implements neofs.NeoFS interface method. func (x *NeoFS) CreateObject(ctx context.Context, prm layer.PrmObjectCreate) (oid.ID, error) { - ni, err := x.pool.NetworkInfo(ctx, client.PrmNetworkInfo{}) - if err != nil { - return oid.ID{}, fmt.Errorf("networkInfo: %w", err) - } - attrNum := len(prm.Attributes) + 1 // + creation time if prm.Filepath != "" { @@ -284,7 +281,7 @@ func (x *NeoFS) CreateObject(ctx context.Context, prm layer.PrmObjectCreate) (oi var idObj oid.ID for { - _, err = io.CopyN(writer, prm.Payload, int64(ni.MaxObjectSize())) + _, err = io.CopyN(writer, prm.Payload, x.maxObjectSize) if err == nil { continue }