Skip to content

Commit

Permalink
core, ethdb: reuse database batches (ethereum#15989)
Browse files Browse the repository at this point in the history
* leveldb: Update leveldb to 211f780 (poolfix)

* core, ethdb: reuse database batches
  • Loading branch information
holiman authored and karalabe committed Jan 30, 2018
1 parent 6198c53 commit 017b9f7
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 1 deletion.
2 changes: 1 addition & 1 deletion core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -749,7 +749,7 @@ func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain [
return 0, err
}
bytes += batch.ValueSize()
batch = bc.chainDb.NewBatch()
batch.Reset()
}
}
if batch.ValueSize() > 0 {
Expand Down
8 changes: 8 additions & 0 deletions ethdb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,10 @@ func (b *ldbBatch) ValueSize() int {
return b.size
}

func (b *ldbBatch) Reset() {
b.b.Reset()
}

type table struct {
db Database
prefix string
Expand Down Expand Up @@ -358,3 +362,7 @@ func (tb *tableBatch) Write() error {
func (tb *tableBatch) ValueSize() int {
return tb.batch.ValueSize()
}

func (tb *tableBatch) Reset() {
tb.batch.Reset()
}
2 changes: 2 additions & 0 deletions ethdb/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,6 @@ type Batch interface {
Putter
ValueSize() int // amount of data in the batch
Write() error
// Reset resets the batch for reuse
Reset()
}
5 changes: 5 additions & 0 deletions ethdb/memory_database.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,8 @@ func (b *memBatch) Write() error {
func (b *memBatch) ValueSize() int {
return b.size
}

func (b *memBatch) Reset() {
b.writes = b.writes[:0]
b.size = 0
}

0 comments on commit 017b9f7

Please sign in to comment.