mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 06:36:43 +00:00
TEMP HACK to return memory to leveldb buffer pool
This commit is contained in:
parent
f2ae2f7eef
commit
0fcdcb950a
5 changed files with 17 additions and 0 deletions
4
Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go
generated
vendored
4
Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go
generated
vendored
|
|
@ -1017,6 +1017,10 @@ func (db *DB) SizeOf(ranges []util.Range) (Sizes, error) {
|
|||
return sizes, nil
|
||||
}
|
||||
|
||||
func (db *DB) ReturnBuffer(b []byte) {
|
||||
db.s.tops.bpool.Put(b)
|
||||
}
|
||||
|
||||
// Close closes the DB. This will also releases any outstanding snapshot,
|
||||
// abort any in-flight compaction and discard open transaction.
|
||||
//
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ func (self *LDBDatabase) Get(key []byte) ([]byte, error) {
|
|||
//return rle.Decompress(dat)
|
||||
}
|
||||
|
||||
func (self *LDBDatabase) ReturnBuffer(b []byte) {
|
||||
self.db.ReturnBuffer(b)
|
||||
}
|
||||
|
||||
// Delete deletes the key from the queue and database
|
||||
func (self *LDBDatabase) Delete(key []byte) error {
|
||||
// Measure the database delete latency, if requested
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ type Database interface {
|
|||
Delete(key []byte) error
|
||||
Close()
|
||||
NewBatch() Batch
|
||||
|
||||
ReturnBuffer([]byte)
|
||||
}
|
||||
|
||||
type Batch interface {
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@ func (db *MemDatabase) Get(key []byte) ([]byte, error) {
|
|||
return nil, errors.New("not found")
|
||||
}
|
||||
|
||||
func (db *MemDatabase) ReturnBuffer(b []byte) {
|
||||
}
|
||||
|
||||
func (db *MemDatabase) Keys() [][]byte {
|
||||
db.lock.RLock()
|
||||
defer db.lock.RUnlock()
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import (
|
|||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/crypto/sha3"
|
||||
"github.com/ethereum/go-ethereum/ethdb"
|
||||
"github.com/ethereum/go-ethereum/logger"
|
||||
"github.com/ethereum/go-ethereum/logger/glog"
|
||||
"github.com/rcrowley/go-metrics"
|
||||
|
|
@ -453,6 +454,9 @@ func (t *Trie) resolveHash(n hashNode, prefix, suffix []byte) (node, error) {
|
|||
}
|
||||
}
|
||||
dec := mustDecodeNode(n, enc, t.cachegen)
|
||||
if edb, ok := t.db.(*ethdb.LDBDatabase); ok {
|
||||
edb.ReturnBuffer(enc)
|
||||
}
|
||||
return dec, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue