eth, trie: fix tracer GC which accidentally pruned the metaroot

This commit is contained in:
Péter Szilágyi
2018-08-08 17:16:38 +03:00
parent 8051a0768a
commit 11bbc66082
2 changed files with 11 additions and 2 deletions

View File

@ -297,7 +297,9 @@ func (api *PrivateDebugAPI) traceChain(ctx context.Context, start, end *types.Bl
database.TrieDB().Reference(root, common.Hash{})
}
// Dereference all past tries we ourselves are done working with
database.TrieDB().Dereference(proot)
if proot != (common.Hash{}) {
database.TrieDB().Dereference(proot)
}
proot = root
// TODO(karalabe): Do we need the preimages? Won't they accumulate too much?
@ -526,7 +528,9 @@ func (api *PrivateDebugAPI) computeStateDB(block *types.Block, reexec uint64) (*
return nil, err
}
database.TrieDB().Reference(root, common.Hash{})
database.TrieDB().Dereference(proot)
if proot != (common.Hash{}) {
database.TrieDB().Dereference(proot)
}
proot = root
}
nodes, imgs := database.TrieDB().Size()