mirror of
https://github.com/tendermint/tendermint.git
synced 2026-07-27 18:42:46 +00:00
Add Release & Error methods to Iterator
We need this to properly support LevelDB backend, which needs to be released if we don't want to leak memory.
This commit is contained in:
@@ -10,10 +10,10 @@ type DB interface {
|
||||
DeleteSync([]byte)
|
||||
Close()
|
||||
NewBatch() Batch
|
||||
Iterator() Iterator
|
||||
|
||||
// For debugging
|
||||
Print()
|
||||
Iterator() Iterator
|
||||
Stats() map[string]string
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ type Iterator interface {
|
||||
|
||||
Key() []byte
|
||||
Value() []byte
|
||||
|
||||
Release()
|
||||
Error() error
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -97,6 +97,16 @@ func (it *memDBIterator) Value() []byte {
|
||||
return it.db.Get(it.Key())
|
||||
}
|
||||
|
||||
func (it *memDBIterator) Release() {
|
||||
it.db = nil
|
||||
it.keys = nil
|
||||
return
|
||||
}
|
||||
|
||||
func (it *memDBIterator) Error() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *MemDB) Iterator() Iterator {
|
||||
it := newMemDBIterator()
|
||||
it.db = db
|
||||
|
||||
Reference in New Issue
Block a user