From 90b6daefb26b6d58f23b0b8d4314732a0fdcbac6 Mon Sep 17 00:00:00 2001 From: Giulio rebuffo Date: Mon, 29 Apr 2024 16:31:26 +0200 Subject: [PATCH] Revert "mdbx: pre-open read pagesize from db" (#10125) Reverts ledgerwatch/erigon#10113 --- erigon-lib/kv/mdbx/kv_mdbx.go | 35 ++++------------------------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/erigon-lib/kv/mdbx/kv_mdbx.go b/erigon-lib/kv/mdbx/kv_mdbx.go index fff1ffea13a..9c6f5b9d580 100644 --- a/erigon-lib/kv/mdbx/kv_mdbx.go +++ b/erigon-lib/kv/mdbx/kv_mdbx.go @@ -323,9 +323,9 @@ func (opts MdbxOpts) Open(ctx context.Context) (kv.RwDB, error) { // before env.Open() we don't know real pageSize. but will be implemented soon: https://gitflic.ru/project/erthink/libmdbx/issue/15 // but we want call all `SetOption` before env.Open(), because: // - after they will require rwtx-lock, which is not acceptable in ACCEDEE mode. - opts.pageSize, err = preOpenPageSize(opts) - if err != nil { - return nil, err + pageSize := opts.pageSize + if pageSize == 0 { + pageSize = kv.DefaultPageSize() } var dirtySpace uint64 if opts.dirtySpace > 0 { @@ -343,7 +343,7 @@ func (opts MdbxOpts) Open(ctx context.Context) (kv.RwDB, error) { } } //can't use real pagesize here - it will be known only after env.Open() - if err = env.SetOption(mdbx.OptTxnDpLimit, dirtySpace/opts.pageSize); err != nil { + if err = env.SetOption(mdbx.OptTxnDpLimit, dirtySpace/pageSize); err != nil { return nil, err } @@ -467,33 +467,6 @@ func (opts MdbxOpts) Open(ctx context.Context) (kv.RwDB, error) { return db, nil } -func preOpenPageSize(opts MdbxOpts) (uint64, error) { - // before env.Open() we don't know real pageSize. but will be implemented soon: https://gitflic.ru/project/erthink/libmdbx/issue/15 - // but we want call all `SetOption` before env.Open(), because: - // - after they will require rwtx-lock, which is not acceptable in ACCEDEE mode. - if !dir.FileExist(filepath.Join(opts.path, "mdbx.dat")) { - pageSize := opts.pageSize - if pageSize == 0 { - pageSize = kv.DefaultPageSize() - } - return pageSize, nil - } - - env, err := mdbx.NewEnv() - if err != nil { - return 0, err - } - if err = env.Open(opts.path, mdbx.Accede|mdbx.Readonly, 0644); err != nil { - return 0, err - } - defer env.Close() - in, err := env.Info(nil) - if err != nil { - return 0, fmt.Errorf("%w, label: %s, trace: %s", err, opts.label.String(), stack2.Trace().String()) - } - return uint64(in.PageSize), nil -} - func (opts MdbxOpts) MustOpen() kv.RwDB { db, err := opts.Open(context.Background()) if err != nil {