forked from TrueCloudLab/frostfs-node
[#1524] writecache: Add some bolt parameters to the configuration
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
07e06249d5
commit
972ca83e23
4 changed files with 32 additions and 0 deletions
|
@ -403,6 +403,8 @@ func initShardOptions(c *cfg) {
|
|||
writeCacheOpts = []writecache.Option{
|
||||
writecache.WithPath(writeCacheCfg.Path()),
|
||||
writecache.WithLogger(c.log),
|
||||
writecache.WithMaxBatchSize(writeCacheCfg.BoltDB().MaxBatchSize()),
|
||||
writecache.WithMaxBatchDelay(writeCacheCfg.BoltDB().MaxBatchDelay()),
|
||||
writecache.WithMaxMemSize(writeCacheCfg.MemSize()),
|
||||
writecache.WithMaxObjectSize(writeCacheCfg.MaxObjectSize()),
|
||||
writecache.WithSmallObjectSize(writeCacheCfg.SmallObjectSize()),
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package writecache
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor"
|
||||
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
|
||||
"go.uber.org/zap"
|
||||
|
@ -31,6 +33,10 @@ type options struct {
|
|||
maxCacheSize uint64
|
||||
// objCounters is an ObjectCounters instance needed for cache size estimation.
|
||||
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.
|
||||
|
@ -107,3 +113,21 @@ func WithMaxCacheSize(sz uint64) Option {
|
|||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,6 +38,9 @@ func (c *cache) openStore() error {
|
|||
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 := tx.CreateBucketIfNotExists(defaultBucket)
|
||||
return err
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/fstree"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/object"
|
||||
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
||||
"go.etcd.io/bbolt"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
|
@ -98,6 +99,8 @@ func New(opts ...Option) Cache {
|
|||
smallObjectSize: smallObjectSize,
|
||||
workersCount: defaultFlushWorkersCount,
|
||||
maxCacheSize: maxCacheSizeBytes,
|
||||
maxBatchSize: bbolt.DefaultMaxBatchSize,
|
||||
maxBatchDelay: bbolt.DefaultMaxBatchDelay,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue