From 637347f2ac1a834df950a11632f5912e30372e30 Mon Sep 17 00:00:00 2001 From: jsvisa Date: Fri, 22 Sep 2023 16:18:37 +0800 Subject: [PATCH] core/rawdb: use tryRLock if readonly Signed-off-by: jsvisa --- core/rawdb/freezer.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/rawdb/freezer.go b/core/rawdb/freezer.go index a9fe234321..0cdec03a5b 100644 --- a/core/rawdb/freezer.go +++ b/core/rawdb/freezer.go @@ -108,7 +108,13 @@ func NewFreezer(datadir string, namespace string, readonly bool, maxTableSize ui // Leveldb uses LOCK as the filelock filename. To prevent the // name collision, we use FLOCK as the lock name. lock := flock.New(flockFile) - if locked, err := lock.TryLock(); err != nil { + tryLock := func() (bool, error) { + if readonly { + return lock.TryRLock() + } + return lock.TryLock() + } + if locked, err := tryLock(); err != nil { return nil, err } else if !locked { return nil, errors.New("locking failed")