[#1524] writecache: Add some bolt parameters to the configuration

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2022-06-16 18:21:10 +03:00 committed by LeL
parent 07e06249d5
commit 972ca83e23
4 changed files with 32 additions and 0 deletions

View file

@ -403,6 +403,8 @@ func initShardOptions(c *cfg) {
writeCacheOpts = []writecache.Option{ writeCacheOpts = []writecache.Option{
writecache.WithPath(writeCacheCfg.Path()), writecache.WithPath(writeCacheCfg.Path()),
writecache.WithLogger(c.log), writecache.WithLogger(c.log),
writecache.WithMaxBatchSize(writeCacheCfg.BoltDB().MaxBatchSize()),
writecache.WithMaxBatchDelay(writeCacheCfg.BoltDB().MaxBatchDelay()),
writecache.WithMaxMemSize(writeCacheCfg.MemSize()), writecache.WithMaxMemSize(writeCacheCfg.MemSize()),
writecache.WithMaxObjectSize(writeCacheCfg.MaxObjectSize()), writecache.WithMaxObjectSize(writeCacheCfg.MaxObjectSize()),
writecache.WithSmallObjectSize(writeCacheCfg.SmallObjectSize()), writecache.WithSmallObjectSize(writeCacheCfg.SmallObjectSize()),

View file

@ -1,6 +1,8 @@
package writecache package writecache
import ( import (
"time"
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor" "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor"
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase" meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
"go.uber.org/zap" "go.uber.org/zap"
@ -31,6 +33,10 @@ type options struct {
maxCacheSize uint64 maxCacheSize uint64
// objCounters is an ObjectCounters instance needed for cache size estimation. // objCounters is an ObjectCounters instance needed for cache size estimation.
objCounters ObjectCounters objCounters ObjectCounters
// maxBatchSize is the maximum batch size for the small object database.
maxBatchSize int
// maxBatchDelay is the maximum batch wait time for the small object database.
maxBatchDelay time.Duration
} }
// WithLogger sets logger. // WithLogger sets logger.
@ -107,3 +113,21 @@ func WithMaxCacheSize(sz uint64) Option {
o.maxCacheSize = sz o.maxCacheSize = sz
} }
} }
// WithMaxBatchSize sets max batch size for the small object database.
func WithMaxBatchSize(sz int) Option {
return func(o *options) {
if sz > 0 {
o.maxBatchSize = sz
}
}
}
// WithMaxBatchDelay sets max batch delay for the small object database.
func WithMaxBatchDelay(d time.Duration) Option {
return func(o *options) {
if d > 0 {
o.maxBatchDelay = d
}
}
}

View file

@ -38,6 +38,9 @@ func (c *cache) openStore() error {
return fmt.Errorf("could not open database: %w", err) return fmt.Errorf("could not open database: %w", err)
} }
c.db.MaxBatchSize = c.maxBatchSize
c.db.MaxBatchDelay = c.maxBatchDelay
err = c.db.Update(func(tx *bbolt.Tx) error { err = c.db.Update(func(tx *bbolt.Tx) error {
_, err := tx.CreateBucketIfNotExists(defaultBucket) _, err := tx.CreateBucketIfNotExists(defaultBucket)
return err return err

View file

@ -6,6 +6,7 @@ import (
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/fstree" "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/fstree"
"github.com/nspcc-dev/neofs-sdk-go/object" "github.com/nspcc-dev/neofs-sdk-go/object"
oid "github.com/nspcc-dev/neofs-sdk-go/object/id" oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
"go.etcd.io/bbolt"
"go.uber.org/zap" "go.uber.org/zap"
) )
@ -98,6 +99,8 @@ func New(opts ...Option) Cache {
smallObjectSize: smallObjectSize, smallObjectSize: smallObjectSize,
workersCount: defaultFlushWorkersCount, workersCount: defaultFlushWorkersCount,
maxCacheSize: maxCacheSizeBytes, maxCacheSize: maxCacheSizeBytes,
maxBatchSize: bbolt.DefaultMaxBatchSize,
maxBatchDelay: bbolt.DefaultMaxBatchDelay,
}, },
} }