Skip to content

Commit 14624a7

Browse files
committed
chore(lib/trie): deleteNodesLimit takes no prefix
- Prefix is always inject as `nil` - Working of `deleteNodesLimit` given a `prefix` is wrong
1 parent a1e127b commit 14624a7

File tree

2 files changed

+7
-13
lines changed

2 files changed

+7
-13
lines changed

lib/trie/trie.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -688,8 +688,7 @@ func (t *Trie) clearPrefixLimitBranch(branch *Node, prefix []byte, limit uint32)
688688
newParent = branch
689689

690690
if bytes.HasPrefix(branch.Key, prefix) {
691-
nilPrefix := ([]byte)(nil)
692-
newParent, valuesDeleted, nodesRemoved = t.deleteNodesLimit(branch, nilPrefix, limit)
691+
newParent, valuesDeleted, nodesRemoved = t.deleteNodesLimit(branch, limit)
693692
allDeleted = newParent == nil
694693
return newParent, valuesDeleted, nodesRemoved, allDeleted
695694
}
@@ -743,8 +742,7 @@ func (t *Trie) clearPrefixLimitChild(branch *Node, prefix []byte, limit uint32)
743742
return newParent, valuesDeleted, nodesRemoved, allDeleted
744743
}
745744

746-
nilPrefix := ([]byte)(nil)
747-
child, valuesDeleted, nodesRemoved = t.deleteNodesLimit(child, nilPrefix, limit)
745+
child, valuesDeleted, nodesRemoved = t.deleteNodesLimit(child, limit)
748746
if valuesDeleted == 0 {
749747
allDeleted = branch.Children[childIndex] == nil
750748
return branch, valuesDeleted, nodesRemoved, allDeleted
@@ -764,7 +762,7 @@ func (t *Trie) clearPrefixLimitChild(branch *Node, prefix []byte, limit uint32)
764762
return newParent, valuesDeleted, nodesRemoved, allDeleted
765763
}
766764

767-
func (t *Trie) deleteNodesLimit(parent *Node, prefix []byte, limit uint32) (
765+
func (t *Trie) deleteNodesLimit(parent *Node, limit uint32) (
768766
newParent *Node, valuesDeleted, nodesRemoved uint32) {
769767
if limit == 0 {
770768
valuesDeleted, nodesRemoved = 0, 0
@@ -783,8 +781,6 @@ func (t *Trie) deleteNodesLimit(parent *Node, prefix []byte, limit uint32) (
783781

784782
branch := parent
785783

786-
fullKey := concatenateSlices(prefix, branch.Key)
787-
788784
nilChildren := node.ChildrenCapacity - branch.NumChildren()
789785

790786
var newDeleted, newNodesRemoved uint32
@@ -796,7 +792,7 @@ func (t *Trie) deleteNodesLimit(parent *Node, prefix []byte, limit uint32) (
796792

797793
copySettings := node.DefaultCopySettings
798794
branch = t.prepBranchForMutation(branch, copySettings)
799-
branch.Children[i], newDeleted, newNodesRemoved = t.deleteNodesLimit(child, fullKey, limit)
795+
branch.Children[i], newDeleted, newNodesRemoved = t.deleteNodesLimit(child, limit)
800796
if branch.Children[i] == nil {
801797
nilChildren++
802798
}
@@ -807,7 +803,7 @@ func (t *Trie) deleteNodesLimit(parent *Node, prefix []byte, limit uint32) (
807803

808804
branch.SetDirty()
809805

810-
newParent, branchChildMerged = handleDeletion(branch, fullKey)
806+
newParent, branchChildMerged = handleDeletion(branch, branch.Key)
811807
if branchChildMerged {
812808
nodesRemoved++
813809
}

lib/trie/trie_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2671,7 +2671,6 @@ func Test_Trie_deleteNodesLimit(t *testing.T) {
26712671
testCases := map[string]struct {
26722672
trie Trie
26732673
parent *Node
2674-
prefix []byte
26752674
limit uint32
26762675
newNode *Node
26772676
valuesDeleted uint32
@@ -2806,8 +2805,7 @@ func Test_Trie_deleteNodesLimit(t *testing.T) {
28062805
{Key: []byte{3}, SubValue: []byte{1}},
28072806
}),
28082807
},
2809-
prefix: []byte{1, 2},
2810-
limit: 2,
2808+
limit: 2,
28112809
newNode: &Node{
28122810
Key: []byte{3, 5, 3},
28132811
SubValue: []byte{1},
@@ -2828,7 +2826,7 @@ func Test_Trie_deleteNodesLimit(t *testing.T) {
28282826
expectedTrie := *trie.DeepCopy()
28292827

28302828
newNode, valuesDeleted, nodesRemoved :=
2831-
trie.deleteNodesLimit(testCase.parent, testCase.prefix, testCase.limit)
2829+
trie.deleteNodesLimit(testCase.parent, testCase.limit)
28322830

28332831
assert.Equal(t, testCase.newNode, newNode)
28342832
assert.Equal(t, testCase.valuesDeleted, valuesDeleted)

0 commit comments

Comments
 (0)