filer: leveldb store add auto recovery, report correct error

fix https://github.com/chrislusf/seaweedfs/issues/1326
This commit is contained in:
Chris Lu
2020-05-22 10:54:42 -07:00
parent ab4c9ac221
commit e5a0787653
4 changed files with 21 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ import (
"fmt"
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/errors"
"github.com/syndtr/goleveldb/leveldb/opt"
leveldb_util "github.com/syndtr/goleveldb/leveldb/util"
@@ -49,6 +50,9 @@ func (store *LevelDBStore) initialize(dir string) (err error) {
}
if store.db, err = leveldb.OpenFile(dir, opts); err != nil {
if errors.IsCorrupted(err) {
store.db, err = leveldb.RecoverFile(dir, opts)
}
glog.Infof("filer store open dir %s: %v", dir, err)
return
}