diff --git a/cmd/integration/commands/refetence_db.go b/cmd/integration/commands/refetence_db.go index 6c8cb4d4a74..8721bec5367 100644 --- a/cmd/integration/commands/refetence_db.go +++ b/cmd/integration/commands/refetence_db.go @@ -198,11 +198,8 @@ func init() { func doWarmup(ctx context.Context, chaindata string, bucket string, logger log.Logger) error { const ThreadsLimit = 5_000 - dbOpts := mdbx2.NewMDBX(log.New()).Path(chaindata).Accede().RoTxsLimiter(semaphore.NewWeighted(ThreadsLimit)) - - if dbWriteMap { - dbOpts = dbOpts.WriteMap() - } + dbOpts := mdbx2.NewMDBX(log.New()).Path(chaindata).Accede().RoTxsLimiter(semaphore.NewWeighted(ThreadsLimit)). + WriteMap(dbWriteMap) db := dbOpts.MustOpen() defer db.Close() @@ -258,11 +255,8 @@ func doWarmup(ctx context.Context, chaindata string, bucket string, logger log.L func mdbxTopDup(ctx context.Context, chaindata string, bucket string, logger log.Logger) error { const ThreadsLimit = 5_000 - dbOpts := mdbx2.NewMDBX(log.New()).Path(chaindata).Accede().RoTxsLimiter(semaphore.NewWeighted(ThreadsLimit)) - - if dbWriteMap { - dbOpts = dbOpts.WriteMap() - } + dbOpts := mdbx2.NewMDBX(log.New()).Path(chaindata).Accede().RoTxsLimiter(semaphore.NewWeighted(ThreadsLimit)). + WriteMap(dbWriteMap) db := dbOpts.MustOpen() defer db.Close() @@ -427,10 +421,7 @@ func fToMdbx(ctx context.Context, logger log.Logger, to string) error { } defer file.Close() - dstOpts := mdbx2.NewMDBX(logger).Path(to) - if dbWriteMap { - dstOpts = dstOpts.WriteMap() - } + dstOpts := mdbx2.NewMDBX(logger).Path(to).WriteMap(dbWriteMap) dst := dstOpts.MustOpen() dstTx, err1 := dst.BeginRw(ctx) if err1 != nil { diff --git a/cmd/integration/commands/root.go b/cmd/integration/commands/root.go index f54a47310ac..42b46cecd53 100644 --- a/cmd/integration/commands/root.go +++ b/cmd/integration/commands/root.go @@ -76,11 +76,7 @@ func RootCommand() *cobra.Command { func dbCfg(label kv.Label, path string) kv2.MdbxOpts { const ThreadsLimit = 9_000 limiterB := semaphore.NewWeighted(ThreadsLimit) - opts := kv2.NewMDBX(log.New()).Path(path).Label(label).RoTxsLimiter(limiterB) - - if dbWriteMap { - opts = opts.WriteMap() - } + opts := kv2.NewMDBX(log.New()).Path(path).Label(label).RoTxsLimiter(limiterB).WriteMap(dbWriteMap) // integration tool don't intent to create db, then easiest way to open db - it's pass mdbx.Accede flag, which allow // to read all options from DB, instead of overriding them diff --git a/cmd/integration/commands/state_domains.go b/cmd/integration/commands/state_domains.go index 2b9dd3712e0..e91eb9bf7e9 100644 --- a/cmd/integration/commands/state_domains.go +++ b/cmd/integration/commands/state_domains.go @@ -105,7 +105,7 @@ var readDomains = &cobra.Command{ } defer chainDb.Close() - stateDb, err := kv2.NewMDBX(log.New()).Path(filepath.Join(dirs.DataDir, "statedb")).WriteMap().Open(ctx) + stateDb, err := kv2.NewMDBX(log.New()).Path(filepath.Join(dirs.DataDir, "statedb")).WriteMap(true).Open(ctx) if err != nil { return } diff --git a/erigon-lib/downloader/downloader.go b/erigon-lib/downloader/downloader.go index 6da7edefd12..ec32cdd0172 100644 --- a/erigon-lib/downloader/downloader.go +++ b/erigon-lib/downloader/downloader.go @@ -2753,11 +2753,8 @@ func openClient(ctx context.Context, dbDir, snapDir string, cfg *torrent.ClientC MapSize(16 * datasize.GB). PageSize(uint64(4 * datasize.KB)). RoTxsLimiter(semaphore.NewWeighted(9_000)). - Path(dbDir) - - if writeMap { - dbCfg = dbCfg.WriteMap() - } + Path(dbDir). + WriteMap(writeMap) db, err = dbCfg.Open(ctx) if err != nil { return nil, nil, nil, nil, fmt.Errorf("torrentcfg.openClient: %w", err) diff --git a/erigon-lib/kv/mdbx/kv_mdbx.go b/erigon-lib/kv/mdbx/kv_mdbx.go index d0bf3a801db..7aed4bfc5b4 100644 --- a/erigon-lib/kv/mdbx/kv_mdbx.go +++ b/erigon-lib/kv/mdbx/kv_mdbx.go @@ -188,8 +188,10 @@ func (opts MdbxOpts) MapSize(sz datasize.ByteSize) MdbxOpts { return opts } -func (opts MdbxOpts) WriteMap() MdbxOpts { - opts.flags |= mdbx.WriteMap +func (opts MdbxOpts) WriteMap(flag bool) MdbxOpts { + if flag { + opts.flags |= mdbx.WriteMap + } return opts } func (opts MdbxOpts) LifoReclaim() MdbxOpts { @@ -231,9 +233,7 @@ func PathDbMap() map[string]kv.RoDB { var ErrDBDoesNotExists = fmt.Errorf("can't create database - because opening in `Accede` mode. probably another (main) process can create it") func (opts MdbxOpts) Open(ctx context.Context) (kv.RwDB, error) { - if dbg.WriteMap() { - opts = opts.WriteMap() //nolint - } + opts = opts.WriteMap(dbg.WriteMap()) if dbg.DirtySpace() > 0 { opts = opts.DirtySpace(dbg.DirtySpace()) //nolint } diff --git a/node/node.go b/node/node.go index 704c6745e68..3e3d8393f6f 100644 --- a/node/node.go +++ b/node/node.go @@ -331,11 +331,8 @@ func OpenDatabase(ctx context.Context, config *nodecfg.Config, label kv.Label, n opts := mdbx.NewMDBX(logger). Path(dbPath).Label(label). GrowthStep(16 * datasize.MB). - DBVerbosity(config.DatabaseVerbosity).RoTxsLimiter(roTxsLimiter) - - if config.MdbxWriteMap { - opts = opts.WriteMap() - } + DBVerbosity(config.DatabaseVerbosity).RoTxsLimiter(roTxsLimiter). + WriteMap(config.MdbxWriteMap) if readonly { opts = opts.Readonly()