Skip to content

Commit

Permalink
newDeletedMerkleValues -> pendingDeletedMerkleValues
Browse files Browse the repository at this point in the history
  • Loading branch information
qdm12 committed Oct 11, 2022
1 parent 536e5e7 commit c2910f8
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 60 deletions.
42 changes: 21 additions & 21 deletions lib/trie/trie.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ type Trie struct {
// pruner to detect with database keys (trie node Merkle values) can
// be deleted.
deletedMerkleValues map[string]struct{}
// newDeletedMerkleValues contains deleted Merkle values for operations
// pendingDeletedMerkleValues contains deleted Merkle values for operations
// in progress. Its goal is to prevent having the trie `deletedMerkleValues`
// in a bad state if one of the trie operation modified some (deep copied) trie
// node and then failed.
newDeletedMerkleValues map[string]struct{}
pendingDeletedMerkleValues map[string]struct{}
}

// NewEmptyTrie creates a trie with a nil root
Expand All @@ -41,11 +41,11 @@ func NewEmptyTrie() *Trie {
// NewTrie creates a trie with an existing root node
func NewTrie(root *Node) *Trie {
return &Trie{
root: root,
childTries: make(map[common.Hash]*Trie),
generation: 0, // Initially zero but increases after every snapshot.
deletedMerkleValues: make(map[string]struct{}),
newDeletedMerkleValues: make(map[string]struct{}),
root: root,
childTries: make(map[common.Hash]*Trie),
generation: 0, // Initially zero but increases after every snapshot.
deletedMerkleValues: make(map[string]struct{}),
pendingDeletedMerkleValues: make(map[string]struct{}),
}
}

Expand All @@ -60,32 +60,32 @@ func (t *Trie) Snapshot() (newTrie *Trie) {
rootCopySettings.CopyCached = true
for rootHash, childTrie := range t.childTries {
childTries[rootHash] = &Trie{
generation: childTrie.generation + 1,
root: childTrie.root.Copy(rootCopySettings),
deletedMerkleValues: make(map[string]struct{}),
newDeletedMerkleValues: make(map[string]struct{}),
generation: childTrie.generation + 1,
root: childTrie.root.Copy(rootCopySettings),
deletedMerkleValues: make(map[string]struct{}),
pendingDeletedMerkleValues: make(map[string]struct{}),
}
}

return &Trie{
generation: t.generation + 1,
root: t.root,
childTries: childTries,
deletedMerkleValues: make(map[string]struct{}),
newDeletedMerkleValues: make(map[string]struct{}),
generation: t.generation + 1,
root: t.root,
childTries: childTries,
deletedMerkleValues: make(map[string]struct{}),
pendingDeletedMerkleValues: make(map[string]struct{}),
}
}

// handleTrackedDeltas modifies the trie deleted merkle values set
// only if the error is nil. In all cases, it resets the
// `newDeletedMerkleValues` map.
// `pendingDeletedMerkleValues` map.
func (t *Trie) handleTrackedDeltas(err error) {
if err == nil {
for merkleValue := range t.newDeletedMerkleValues {
for merkleValue := range t.pendingDeletedMerkleValues {
t.deletedMerkleValues[merkleValue] = struct{}{}
}
}
t.newDeletedMerkleValues = make(map[string]struct{})
t.pendingDeletedMerkleValues = make(map[string]struct{})
}

func (t *Trie) prepLeafForMutation(currentLeaf *Node,
Expand All @@ -95,7 +95,7 @@ func (t *Trie) prepLeafForMutation(currentLeaf *Node,
// of current leaf.
newLeaf = currentLeaf
} else {
newLeaf = updateGeneration(currentLeaf, t.generation, t.newDeletedMerkleValues, copySettings)
newLeaf = updateGeneration(currentLeaf, t.generation, t.pendingDeletedMerkleValues, copySettings)
}
newLeaf.SetDirty()
return newLeaf
Expand All @@ -108,7 +108,7 @@ func (t *Trie) prepBranchForMutation(currentBranch *Node,
// of current branch.
newBranch = currentBranch
} else {
newBranch = updateGeneration(currentBranch, t.generation, t.newDeletedMerkleValues, copySettings)
newBranch = updateGeneration(currentBranch, t.generation, t.pendingDeletedMerkleValues, copySettings)
}
newBranch.SetDirty()
return newBranch
Expand Down
78 changes: 39 additions & 39 deletions lib/trie/trie_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import (

func Test_NewEmptyTrie(t *testing.T) {
expectedTrie := &Trie{
childTries: make(map[common.Hash]*Trie),
deletedMerkleValues: map[string]struct{}{},
newDeletedMerkleValues: map[string]struct{}{},
childTries: make(map[common.Hash]*Trie),
deletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
}
trie := NewEmptyTrie()
assert.Equal(t, expectedTrie, trie)
Expand All @@ -36,9 +36,9 @@ func Test_NewTrie(t *testing.T) {
Key: []byte{0},
SubValue: []byte{17},
},
childTries: make(map[common.Hash]*Trie),
deletedMerkleValues: map[string]struct{}{},
newDeletedMerkleValues: map[string]struct{}{},
childTries: make(map[common.Hash]*Trie),
deletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
}
trie := NewTrie(root)
assert.Equal(t, expectedTrie, trie)
Expand All @@ -57,7 +57,7 @@ func Test_Trie_Snapshot(t *testing.T) {
deletedMerkleValues: map[string]struct{}{
"a": {},
},
newDeletedMerkleValues: map[string]struct{}{
pendingDeletedMerkleValues: map[string]struct{}{
"a temp": {},
},
},
Expand All @@ -67,7 +67,7 @@ func Test_Trie_Snapshot(t *testing.T) {
deletedMerkleValues: map[string]struct{}{
"b": {},
},
newDeletedMerkleValues: map[string]struct{}{
pendingDeletedMerkleValues: map[string]struct{}{
"b temp": {},
},
},
Expand All @@ -76,7 +76,7 @@ func Test_Trie_Snapshot(t *testing.T) {
"a": {},
"b": {},
},
newDeletedMerkleValues: map[string]struct{}{
pendingDeletedMerkleValues: map[string]struct{}{
"a temp": {},
"b temp": {},
},
Expand All @@ -87,20 +87,20 @@ func Test_Trie_Snapshot(t *testing.T) {
root: &Node{Key: []byte{8}, SubValue: []byte{1}},
childTries: map[common.Hash]*Trie{
{1}: {
generation: 2,
root: &Node{Key: []byte{1}, SubValue: []byte{1}},
deletedMerkleValues: map[string]struct{}{},
newDeletedMerkleValues: map[string]struct{}{},
generation: 2,
root: &Node{Key: []byte{1}, SubValue: []byte{1}},
deletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
{2}: {
generation: 3,
root: &Node{Key: []byte{2}, SubValue: []byte{1}},
deletedMerkleValues: map[string]struct{}{},
newDeletedMerkleValues: map[string]struct{}{},
generation: 3,
root: &Node{Key: []byte{2}, SubValue: []byte{1}},
deletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
deletedMerkleValues: map[string]struct{}{},
newDeletedMerkleValues: map[string]struct{}{},
deletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
}

newTrie := trie.Snapshot()
Expand Down Expand Up @@ -1022,8 +1022,8 @@ func Test_Trie_Put(t *testing.T) {
}{
"trie with key and value": {
trie: Trie{
generation: 1,
newDeletedMerkleValues: map[string]struct{}{},
generation: 1,
pendingDeletedMerkleValues: map[string]struct{}{},
root: &Node{
Key: []byte{1, 2, 0, 5},
SubValue: []byte{1},
Expand All @@ -1032,8 +1032,8 @@ func Test_Trie_Put(t *testing.T) {
key: []byte{0x12, 0x16},
value: []byte{2},
expectedTrie: Trie{
generation: 1,
newDeletedMerkleValues: map[string]struct{}{},
generation: 1,
pendingDeletedMerkleValues: map[string]struct{}{},
root: &Node{
Key: []byte{1, 2},
Generation: 1,
Expand Down Expand Up @@ -1597,21 +1597,21 @@ func Test_Trie_LoadFromMap(t *testing.T) {
}{
"nil data": {
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"empty data": {
data: map[string]string{},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"bad key": {
data: map[string]string{
"0xa": "0x01",
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
errWrapped: hex.ErrLength,
errMessage: "cannot convert key hex to bytes: encoding/hex: odd length hex string: 0xa",
Expand All @@ -1621,7 +1621,7 @@ func Test_Trie_LoadFromMap(t *testing.T) {
"0x01": "0xa",
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
errWrapped: hex.ErrLength,
errMessage: "cannot convert value hex to bytes: encoding/hex: odd length hex string: 0xa",
Expand All @@ -1633,7 +1633,7 @@ func Test_Trie_LoadFromMap(t *testing.T) {
"0x0130": "0x08",
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
root: &Node{
Key: []byte{00, 01},
SubValue: []byte{6},
Expand Down Expand Up @@ -1681,7 +1681,7 @@ func Test_Trie_LoadFromMap(t *testing.T) {
"0x0130": "0x08",
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
root: &Node{
Key: []byte{00, 01},
SubValue: []byte{6},
Expand Down Expand Up @@ -2172,7 +2172,7 @@ func Test_Trie_ClearPrefixLimit(t *testing.T) {
}{
"limit is zero": {
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"clear prefix limit": {
Expand All @@ -2195,7 +2195,7 @@ func Test_Trie_ClearPrefixLimit(t *testing.T) {
deleted: 2,
allDeleted: true,
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
}
Expand Down Expand Up @@ -2940,7 +2940,7 @@ func Test_Trie_ClearPrefix(t *testing.T) {
root: &Node{SubValue: []byte{1}},
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"empty prefix": {
Expand All @@ -2949,13 +2949,13 @@ func Test_Trie_ClearPrefix(t *testing.T) {
},
prefix: []byte{},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"empty trie": {
prefix: []byte{0x12},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"clear prefix": {
Expand Down Expand Up @@ -2988,7 +2988,7 @@ func Test_Trie_ClearPrefix(t *testing.T) {
SubValue: []byte{1},
Dirty: true,
},
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
}
Expand Down Expand Up @@ -3321,21 +3321,21 @@ func Test_Trie_Delete(t *testing.T) {
root: &Node{SubValue: []byte{1}},
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"empty key": {
trie: Trie{
root: &Node{SubValue: []byte{1}},
},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"empty trie": {
key: []byte{0x12},
expectedTrie: Trie{
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
"delete branch node": {
Expand Down Expand Up @@ -3384,7 +3384,7 @@ func Test_Trie_Delete(t *testing.T) {
},
}),
},
newDeletedMerkleValues: map[string]struct{}{},
pendingDeletedMerkleValues: map[string]struct{}{},
},
},
}
Expand Down

0 comments on commit c2910f8

Please sign in to comment.