diff --git a/core/state/database_hasher_binary.go b/core/state/database_hasher_binary.go index 0e843d31ff..c12a9ab6b0 100644 --- a/core/state/database_hasher_binary.go +++ b/core/state/database_hasher_binary.go @@ -387,5 +387,8 @@ func (h *binaryHasher) PrefetchStorage(addr common.Address, keys []common.Hash, // TermPrefetch terminates all prefetcher goroutines. Safe to call multiple times. func (h *binaryHasher) TermPrefetch() { + if h == nil { + return + } h.trie.term() } diff --git a/core/state/database_hasher_merkle.go b/core/state/database_hasher_merkle.go index cd99a4cc9a..fa39df887c 100644 --- a/core/state/database_hasher_merkle.go +++ b/core/state/database_hasher_merkle.go @@ -457,6 +457,9 @@ func (h *merkleHasher) PrefetchStorage(addr common.Address, keys []common.Hash, // TermPrefetch terminates all prefetcher goroutines. Safe to call multiple times. func (h *merkleHasher) TermPrefetch() { + if h == nil { + return + } h.acctTrie.term() for _, tr := range h.storageTries { tr.term() diff --git a/core/state/statedb.go b/core/state/statedb.go index df4a6ec215..010c6768fa 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -1040,8 +1040,18 @@ func (s *StateDB) commitAndFlush(block uint64, deleteEmptyObjects bool, noStorag } s.DatabaseCommits = time.Since(start) - s.reader, _ = s.db.Reader(s.originalRoot) - s.hasher, _ = s.db.Hasher(s.originalRoot) + reader, err := s.db.Reader(s.originalRoot) + if err != nil { + return nil, err + } + s.reader = reader + + hasher, err := s.db.Hasher(s.originalRoot) + if err != nil { + return nil, err + } + s.hasher = hasher + return ret, nil }