Skip to content

Commit c590b50

Browse files
committed
core, ethdb, trie: validate database errors
1 parent 3deded2 commit c590b50

File tree

5 files changed

+25
-9
lines changed

5 files changed

+25
-9
lines changed

common/db.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package common
22

33
// Database interface
44
type Database interface {
5-
Put(key []byte, value []byte)
5+
Put(key []byte, value []byte) error
66
Get(key []byte) ([]byte, error)
77
Delete(key []byte) error
88
Close()

core/chain_manager.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,14 @@ func (self *ChainManager) ExportN(w io.Writer, first uint64, last uint64) error
377377
// assumes that the `mu` mutex is held!
378378
func (bc *ChainManager) insert(block *types.Block) {
379379
key := append(blockNumPre, block.Number().Bytes()...)
380-
bc.blockDb.Put(key, block.Hash().Bytes())
381-
bc.blockDb.Put([]byte("LastBlock"), block.Hash().Bytes())
380+
err := bc.blockDb.Put(key, block.Hash().Bytes())
381+
if err != nil {
382+
glog.Fatal("db write fail:", err)
383+
}
384+
err = bc.blockDb.Put([]byte("LastBlock"), block.Hash().Bytes())
385+
if err != nil {
386+
glog.Fatal("db write fail:", err)
387+
}
382388

383389
bc.currentBlock = block
384390
bc.lastBlockHash = block.Hash()
@@ -387,7 +393,11 @@ func (bc *ChainManager) insert(block *types.Block) {
387393
func (bc *ChainManager) write(block *types.Block) {
388394
enc, _ := rlp.EncodeToBytes((*types.StorageBlock)(block))
389395
key := append(blockHashPre, block.Hash().Bytes()...)
390-
bc.blockDb.Put(key, enc)
396+
err := bc.blockDb.Put(key, enc)
397+
if err != nil {
398+
glog.Fatal("db write fail:", err)
399+
}
400+
391401
// Push block to cache
392402
bc.cache.Push(block)
393403
}

ethdb/database.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ func NewLDBDatabase(file string) (*LDBDatabase, error) {
4242
}
4343

4444
// Put puts the given key / value to the queue
45-
func (self *LDBDatabase) Put(key []byte, value []byte) {
46-
self.db.Put(key, rle.Compress(value), nil)
45+
func (self *LDBDatabase) Put(key []byte, value []byte) error {
46+
return self.db.Put(key, rle.Compress(value), nil)
4747
}
4848

4949
// Get returns the given key if it's present.

ethdb/memory_database.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ func NewMemDatabase() (*MemDatabase, error) {
1919
return db, nil
2020
}
2121

22-
func (db *MemDatabase) Put(key []byte, value []byte) {
22+
func (db *MemDatabase) Put(key []byte, value []byte) error {
2323
db.db[string(key)] = value
24+
25+
return nil
2426
}
2527

2628
func (db *MemDatabase) Set(key []byte, value []byte) {

trie/cache.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package trie
22

3+
import "github.com/ethereum/go-ethereum/logger/glog"
4+
35
type Backend interface {
46
Get([]byte) ([]byte, error)
5-
Put([]byte, []byte)
7+
Put([]byte, []byte) error
68
}
79

810
type Cache struct {
@@ -29,7 +31,9 @@ func (self *Cache) Put(key []byte, data []byte) {
2931

3032
func (self *Cache) Flush() {
3133
for k, v := range self.store {
32-
self.backend.Put([]byte(k), v)
34+
if err := self.backend.Put([]byte(k), v); err != nil {
35+
glog.Fatal("db write err:", err)
36+
}
3337
}
3438

3539
// This will eventually grow too large. We'd could

0 commit comments

Comments
 (0)