Skip to content

Commit 6975172

Browse files
authored
whisper/mailserver : recover corrupt db files before opening (#20891)
* whisper/mailserver : recover db file when openfile corrupted * whisper/mailserver : fix db -> s.db * whisper/mailserver : common/errors for dbfile
1 parent c8e9a91 commit 6975172

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

whisper/mailserver/mailserver.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/ethereum/go-ethereum/rlp"
2828
whisper "github.com/ethereum/go-ethereum/whisper/whisperv6"
2929
"github.com/syndtr/goleveldb/leveldb"
30+
"github.com/syndtr/goleveldb/leveldb/errors"
3031
"github.com/syndtr/goleveldb/leveldb/opt"
3132
"github.com/syndtr/goleveldb/leveldb/util"
3233
)
@@ -70,6 +71,9 @@ func (s *WMailServer) Init(shh *whisper.Whisper, path string, password string, p
7071
}
7172

7273
s.db, err = leveldb.OpenFile(path, &opt.Options{OpenFilesCacheCapacity: 32})
74+
if _, iscorrupted := err.(*errors.ErrCorrupted); iscorrupted {
75+
s.db, err = leveldb.RecoverFile(path, nil)
76+
}
7377
if err != nil {
7478
return fmt.Errorf("open DB file: %s", err)
7579
}

0 commit comments

Comments
 (0)