[#845] node: Configure Object PUT remote and local pools separately

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2021-09-24 13:50:25 +03:00 committed by Alex Vanin
parent ee20200c2e
commit 0e3e8db5c0
6 changed files with 27 additions and 10 deletions

View file

@ -435,12 +435,12 @@ func initObjectPool(cfg *config.Config) (pool cfgObjectRoutines) {
optNonBlocking := ants.WithNonblocking(true) optNonBlocking := ants.WithNonblocking(true)
pool.putRemote, err = ants.NewPool(objectconfig.Put(cfg).PoolSize(), optNonBlocking) pool.putRemote, err = ants.NewPool(objectconfig.Put(cfg).PoolSizeRemote(), optNonBlocking)
if err != nil { if err != nil {
fatalOnErr(err) fatalOnErr(err)
} }
pool.putLocal, err = ants.NewPool(objectconfig.Put(cfg).PoolSize(), optNonBlocking) pool.putLocal, err = ants.NewPool(objectconfig.Put(cfg).PoolSizeLocal(), optNonBlocking)
if err != nil { if err != nil {
fatalOnErr(err) fatalOnErr(err)
} }

View file

@ -28,11 +28,23 @@ func Put(c *config.Config) PutConfig {
} }
} }
// PoolSize returns value of "pool_size" config parameter. // PoolSizeRemote returns value of "pool_size_remote" config parameter.
// //
// Returns PutPoolSizeDefault if value is not positive number. // Returns PutPoolSizeDefault if value is not positive number.
func (g PutConfig) PoolSize() int { func (g PutConfig) PoolSizeRemote() int {
v := config.Int(g.cfg, "pool_size") v := config.Int(g.cfg, "pool_size_remote")
if v > 0 {
return int(v)
}
return PutPoolSizeDefault
}
// PoolSizeLocal returns value of "pool_size_local" config parameter.
//
// Returns PutPoolSizeDefault if value is not positive number.
func (g PutConfig) PoolSizeLocal() int {
v := config.Int(g.cfg, "pool_size_local")
if v > 0 { if v > 0 {
return int(v) return int(v)
} }

View file

@ -13,13 +13,15 @@ func TestObjectSection(t *testing.T) {
t.Run("defaults", func(t *testing.T) { t.Run("defaults", func(t *testing.T) {
empty := configtest.EmptyConfig() empty := configtest.EmptyConfig()
require.Equal(t, objectconfig.PutPoolSizeDefault, objectconfig.Put(empty).PoolSize()) require.Equal(t, objectconfig.PutPoolSizeDefault, objectconfig.Put(empty).PoolSizeRemote())
require.Equal(t, objectconfig.PutPoolSizeDefault, objectconfig.Put(empty).PoolSizeLocal())
}) })
const path = "../../../../config/example/node" const path = "../../../../config/example/node"
var fileConfigTest = func(c *config.Config) { var fileConfigTest = func(c *config.Config) {
require.Equal(t, 100, objectconfig.Put(c).PoolSize()) require.Equal(t, 100, objectconfig.Put(c).PoolSizeRemote())
require.Equal(t, 101, objectconfig.Put(c).PoolSizeLocal())
} }
configtest.ForEachFileType(path, fileConfigTest) configtest.ForEachFileType(path, fileConfigTest)

View file

@ -64,7 +64,8 @@ NEOFS_POLICER_HEAD_TIMEOUT=15s
NEOFS_REPLICATOR_PUT_TIMEOUT=15s NEOFS_REPLICATOR_PUT_TIMEOUT=15s
# Object service section # Object service section
NEOFS_OBJECT_PUT_POOL_SIZE=100 NEOFS_OBJECT_PUT_POOL_SIZE_REMOTE=100
NEOFS_OBJECT_PUT_POOL_SIZE_LOCAL=101
# Storage engine section # Storage engine section
NEOFS_STORAGE_SHARD_NUM=2 NEOFS_STORAGE_SHARD_NUM=2

View file

@ -97,7 +97,8 @@
}, },
"object": { "object": {
"put": { "put": {
"pool_size": 100 "pool_size_remote": 100,
"pool_size_local": 101
} }
}, },
"storage": { "storage": {

View file

@ -84,7 +84,8 @@ replicator:
object: object:
put: put:
pool_size: 100 pool_size_remote: 100
pool_size_local: 101
storage: storage:
shard_num: 2 shard_num: 2