diff --git a/cmd/neofs-node/object.go b/cmd/neofs-node/object.go index 6a38484c4..5b5b043b0 100644 --- a/cmd/neofs-node/object.go +++ b/cmd/neofs-node/object.go @@ -294,6 +294,7 @@ func initObjectService(c *cfg) { sRange := rangesvc.NewService( rangesvc.WithKeyStorage(keyStorage), + rangesvc.WithClientCache(clientCache), rangesvc.WithLocalStorage(ls), rangesvc.WithContainerSource(c.cfgObject.cnrStorage), rangesvc.WithNetworkMapSource(c.cfgObject.netMapStorage), diff --git a/pkg/services/object/range/remote.go b/pkg/services/object/range/remote.go index 1ad9389ac..b9281db72 100644 --- a/pkg/services/object/range/remote.go +++ b/pkg/services/object/range/remote.go @@ -8,6 +8,7 @@ import ( "github.com/nspcc-dev/neofs-api-go/pkg/object" "github.com/nspcc-dev/neofs-api-go/pkg/token" "github.com/nspcc-dev/neofs-node/pkg/network" + "github.com/nspcc-dev/neofs-node/pkg/network/cache" "github.com/nspcc-dev/neofs-node/pkg/services/object/util" "github.com/pkg/errors" ) @@ -26,6 +27,8 @@ type remoteRangeWriter struct { addr *object.Address rng *object.Range + + clientCache *cache.ClientCache } func (r *remoteRangeWriter) WriteTo(w io.Writer) (int64, error) { @@ -39,9 +42,7 @@ func (r *remoteRangeWriter) WriteTo(w io.Writer) (int64, error) { return 0, err } - c, err := client.New(key, - client.WithAddress(addr), - ) + c, err := r.clientCache.Get(key, addr) if err != nil { return 0, errors.Wrapf(err, "(%T) could not create SDK client %s", r, addr) } diff --git a/pkg/services/object/range/service.go b/pkg/services/object/range/service.go index 5d088e0f5..2cc7849a9 100644 --- a/pkg/services/object/range/service.go +++ b/pkg/services/object/range/service.go @@ -9,6 +9,7 @@ import ( "github.com/nspcc-dev/neofs-node/pkg/core/netmap" "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/localstore" "github.com/nspcc-dev/neofs-node/pkg/network" + "github.com/nspcc-dev/neofs-node/pkg/network/cache" headsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/head" objutil "github.com/nspcc-dev/neofs-node/pkg/services/object/util" "github.com/nspcc-dev/neofs-node/pkg/util" @@ -35,6 +36,8 @@ type cfg struct { localAddrSrc network.LocalAddressSource headSvc *headsvc.Service + + clientCache *cache.ClientCache } func defaultCfg() *cfg { @@ -164,3 +167,9 @@ func WithHeadService(v *headsvc.Service) Option { c.headSvc = v } } + +func WithClientCache(v *cache.ClientCache) Option { + return func(c *cfg) { + c.clientCache = v + } +} diff --git a/pkg/services/object/range/streamer.go b/pkg/services/object/range/streamer.go index 54a95610c..ebc714019 100644 --- a/pkg/services/object/range/streamer.go +++ b/pkg/services/object/range/streamer.go @@ -178,13 +178,14 @@ loop: } } else { rngWriter = &remoteRangeWriter{ - ctx: p.ctx, - keyStorage: p.keyStorage, - node: addr, - token: p.prm.common.SessionToken(), - bearer: p.prm.common.BearerToken(), - addr: objAddr, - rng: nextRange, + ctx: p.ctx, + keyStorage: p.keyStorage, + node: addr, + token: p.prm.common.SessionToken(), + bearer: p.prm.common.BearerToken(), + addr: objAddr, + rng: nextRange, + clientCache: p.clientCache, } }