Add method to recover LevelDB after crash.

This commit is contained in:
Andrey Smirnov
2014-04-05 00:30:39 +04:00
parent 4caeea49b1
commit 400d0da7d4
2 changed files with 46 additions and 2 deletions
+19
View File
@@ -7,6 +7,7 @@ import (
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/filter"
"github.com/syndtr/goleveldb/leveldb/opt"
"github.com/syndtr/goleveldb/leveldb/storage"
"github.com/syndtr/goleveldb/leveldb/util"
)
@@ -51,6 +52,24 @@ func OpenDB(path string) (Storage, error) {
return &levelDB{db: db}, nil
}
// RecoverDB recovers LevelDB database from corruption
func RecoverDB(path string) error {
stor, err := storage.OpenFile("/Users/smira/.aptly/db/")
if err != nil {
return err
}
db, err := leveldb.Recover(stor, nil)
if err != nil {
return err
}
db.Close()
stor.Close()
return nil
}
// Get key value from database
func (l *levelDB) Get(key []byte) ([]byte, error) {
value, err := l.db.Get(key, nil)