Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
c036fe35
Unverified
Commit
c036fe35
authored
Apr 21, 2020
by
Martin Holst Swende
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core/state/snapshot: make difflayer account iterator seek operation inclusive
parent
7599999d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
5 deletions
+18
-5
iterator.go
core/state/snapshot/iterator.go
+1
-1
iterator_test.go
core/state/snapshot/iterator_test.go
+17
-4
No files found.
core/state/snapshot/iterator.go
View file @
c036fe35
...
@@ -70,7 +70,7 @@ func (dl *diffLayer) AccountIterator(seek common.Hash) AccountIterator {
...
@@ -70,7 +70,7 @@ func (dl *diffLayer) AccountIterator(seek common.Hash) AccountIterator {
// Seek out the requested starting account
// Seek out the requested starting account
hashes
:=
dl
.
AccountList
()
hashes
:=
dl
.
AccountList
()
index
:=
sort
.
Search
(
len
(
hashes
),
func
(
i
int
)
bool
{
index
:=
sort
.
Search
(
len
(
hashes
),
func
(
i
int
)
bool
{
return
bytes
.
Compare
(
seek
[
:
],
hashes
[
i
][
:
])
<
0
return
bytes
.
Compare
(
seek
[
:
],
hashes
[
i
][
:
])
<
=
0
})
})
// Assemble and returned the already seeked iterator
// Assemble and returned the already seeked iterator
return
&
diffAccountIterator
{
return
&
diffAccountIterator
{
...
...
core/state/snapshot/iterator_test.go
View file @
c036fe35
...
@@ -351,22 +351,30 @@ func TestAccountIteratorSeek(t *testing.T) {
...
@@ -351,22 +351,30 @@ func TestAccountIteratorSeek(t *testing.T) {
snaps
.
Update
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0x03"
),
nil
,
snaps
.
Update
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0x03"
),
nil
,
randomAccountSet
(
"0xcc"
,
"0xf0"
,
"0xff"
),
nil
)
randomAccountSet
(
"0xcc"
,
"0xf0"
,
"0xff"
),
nil
)
// Construct various iterators and ensure their tranversal is correct
// Account set is now
// 02: aa, ee, f0, ff
// 03: aa, bb, dd, ee, f0 (, f0), ff
// 04: aa, bb, cc, dd, ee, f0 (, f0), ff (, ff)
// Construct various iterators and ensure their traversal is correct
it
,
_
:=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xdd"
))
it
,
_
:=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xdd"
))
defer
it
.
Release
()
defer
it
.
Release
()
verifyIterator
(
t
,
3
,
it
)
// expected: ee, f0, ff
verifyIterator
(
t
,
3
,
it
)
// expected: ee, f0, ff
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xaa"
))
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xaa"
))
defer
it
.
Release
()
defer
it
.
Release
()
verifyIterator
(
t
,
3
,
it
)
// expected:
ee, f0, ff
verifyIterator
(
t
,
4
,
it
)
// expected: aa,
ee, f0, ff
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xff"
))
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xff"
))
defer
it
.
Release
()
defer
it
.
Release
()
verifyIterator
(
t
,
1
,
it
)
// expected: ff
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x02"
),
common
.
HexToHash
(
"0xff1"
))
defer
it
.
Release
()
verifyIterator
(
t
,
0
,
it
)
// expected: nothing
verifyIterator
(
t
,
0
,
it
)
// expected: nothing
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xbb"
))
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xbb"
))
defer
it
.
Release
()
defer
it
.
Release
()
verifyIterator
(
t
,
5
,
it
)
// expected:
cc, dd, ee, f0, ff
verifyIterator
(
t
,
6
,
it
)
// expected: bb,
cc, dd, ee, f0, ff
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xef"
))
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xef"
))
defer
it
.
Release
()
defer
it
.
Release
()
...
@@ -374,11 +382,16 @@ func TestAccountIteratorSeek(t *testing.T) {
...
@@ -374,11 +382,16 @@ func TestAccountIteratorSeek(t *testing.T) {
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xf0"
))
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xf0"
))
defer
it
.
Release
()
defer
it
.
Release
()
verifyIterator
(
t
,
1
,
it
)
// expected:
ff
verifyIterator
(
t
,
2
,
it
)
// expected: f0,
ff
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xff"
))
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xff"
))
defer
it
.
Release
()
defer
it
.
Release
()
verifyIterator
(
t
,
1
,
it
)
// expected: ff
it
,
_
=
snaps
.
AccountIterator
(
common
.
HexToHash
(
"0x04"
),
common
.
HexToHash
(
"0xff1"
))
defer
it
.
Release
()
verifyIterator
(
t
,
0
,
it
)
// expected: nothing
verifyIterator
(
t
,
0
,
it
)
// expected: nothing
}
}
// TestIteratorDeletions tests that the iterator behaves correct when there are
// TestIteratorDeletions tests that the iterator behaves correct when there are
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment