diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-04-28 19:07:14 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-04-28 19:07:14 +0800 |
commit | a6a49ccbf77616c1b0fd3a9cd708965211bcab6a (patch) | |
tree | b52832a16cc4766a39155ff8a0983b757551f333 | |
parent | a7d894611e8588716be70f2eb1375f8aebcdf608 (diff) | |
parent | b569550a391d867b8c600d43e645220396d3a17e (diff) | |
download | dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.tar dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.tar.gz dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.tar.bz2 dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.tar.lz dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.tar.xz dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.tar.zst dexon-a6a49ccbf77616c1b0fd3a9cd708965211bcab6a.zip |
Merge pull request #821 from karalabe/nodedb-fix
p2p/discover: fix api issues caused by leveldb update
-rw-r--r-- | p2p/discover/database.go | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/p2p/discover/database.go b/p2p/discover/database.go index d966a6ac1..964f86b84 100644 --- a/p2p/discover/database.go +++ b/p2p/discover/database.go @@ -14,8 +14,10 @@ import ( "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/rlp" "github.com/syndtr/goleveldb/leveldb" + "github.com/syndtr/goleveldb/leveldb/errors" "github.com/syndtr/goleveldb/leveldb/iterator" "github.com/syndtr/goleveldb/leveldb/storage" + "github.com/syndtr/goleveldb/leveldb/util" ) var ( @@ -71,7 +73,7 @@ func newMemoryNodeDB() (*nodeDB, error) { func newPersistentNodeDB(path string, version int) (*nodeDB, error) { // Try to open the cache, recovering any corruption db, err := leveldb.OpenFile(path, nil) - if _, iscorrupted := err.(leveldb.ErrCorrupted); iscorrupted { + if _, iscorrupted := err.(*errors.ErrCorrupted); iscorrupted { db, err = leveldb.RecoverFile(path, nil) } if err != nil { @@ -227,9 +229,9 @@ func (db *nodeDB) expireNodes() error { continue } // Otherwise delete all associated information - prefix := makeKey(id, "") - for ok := it.Seek(prefix); ok && bytes.HasPrefix(it.Key(), prefix); ok = it.Next() { - if err := db.lvl.Delete(it.Key(), nil); err != nil { + deleter := db.lvl.NewIterator(util.BytesPrefix(makeKey(id, "")), nil) + for deleter.Next() { + if err := db.lvl.Delete(deleter.Key(), nil); err != nil { return err } } |