Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[rpc-test] eth_accRange: set upper bound #12609

Merged
merged 163 commits into from
Nov 8, 2024
Merged
Show file tree
Hide file tree
Changes from 84 commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
7e31d31
save
AskAlexSharov Nov 4, 2024
f4746f9
save
AskAlexSharov Nov 4, 2024
fe2cab2
save
AskAlexSharov Nov 4, 2024
24a1b8e
save
AskAlexSharov Nov 4, 2024
3f489fb
save
AskAlexSharov Nov 4, 2024
eeb7d17
save
AskAlexSharov Nov 4, 2024
9580d17
save
AskAlexSharov Nov 4, 2024
998f1c9
save
AskAlexSharov Nov 4, 2024
b9bc6d2
save
AskAlexSharov Nov 4, 2024
8e396c2
save
AskAlexSharov Nov 4, 2024
4bbd903
save
AskAlexSharov Nov 4, 2024
c420190
save
AskAlexSharov Nov 4, 2024
fa66df4
save
AskAlexSharov Nov 4, 2024
b044a4e
save
AskAlexSharov Nov 4, 2024
4945272
save
AskAlexSharov Nov 4, 2024
346ad3c
save
AskAlexSharov Nov 4, 2024
64e61b2
save
AskAlexSharov Nov 4, 2024
dc4b274
save
AskAlexSharov Nov 4, 2024
8eed437
save
AskAlexSharov Nov 4, 2024
ca40ad6
save
AskAlexSharov Nov 4, 2024
056026c
save
AskAlexSharov Nov 4, 2024
f991aa8
save
AskAlexSharov Nov 4, 2024
7cf18e5
save
AskAlexSharov Nov 4, 2024
6540736
save
AskAlexSharov Nov 4, 2024
ce530c0
save
AskAlexSharov Nov 4, 2024
329ed1e
save
AskAlexSharov Nov 4, 2024
f7c44c8
save
AskAlexSharov Nov 4, 2024
5ab67cf
save
AskAlexSharov Nov 4, 2024
f2737e8
save
AskAlexSharov Nov 4, 2024
b3e4937
save
AskAlexSharov Nov 4, 2024
405fb89
save
AskAlexSharov Nov 4, 2024
239b672
save
AskAlexSharov Nov 4, 2024
8357e72
Merge branch 'main' into eth_rpc_acc_range
AskAlexSharov Nov 5, 2024
2764da8
save
AskAlexSharov Nov 5, 2024
edfdaec
save
AskAlexSharov Nov 5, 2024
6a1d322
save
AskAlexSharov Nov 5, 2024
61e3a99
save
AskAlexSharov Nov 5, 2024
ca6ab92
save
AskAlexSharov Nov 5, 2024
98e95f1
save
AskAlexSharov Nov 5, 2024
5325c47
save
AskAlexSharov Nov 5, 2024
2b52e70
save
AskAlexSharov Nov 5, 2024
f1725ea
save
AskAlexSharov Nov 5, 2024
29be11e
save
AskAlexSharov Nov 5, 2024
fc3a6ff
save
AskAlexSharov Nov 5, 2024
a8be6b4
save
AskAlexSharov Nov 5, 2024
320a5f4
save
AskAlexSharov Nov 5, 2024
6d7e2ab
save
AskAlexSharov Nov 5, 2024
0eb4604
save
AskAlexSharov Nov 5, 2024
8f263d7
save
AskAlexSharov Nov 5, 2024
d6bf3f7
save
AskAlexSharov Nov 5, 2024
530bfeb
save
AskAlexSharov Nov 5, 2024
3c2d682
save
AskAlexSharov Nov 5, 2024
9397464
save
AskAlexSharov Nov 5, 2024
1d57b1a
save
AskAlexSharov Nov 5, 2024
d800dab
save
AskAlexSharov Nov 5, 2024
3277c68
save
AskAlexSharov Nov 5, 2024
33e3aaa
save
AskAlexSharov Nov 5, 2024
c262466
save
AskAlexSharov Nov 5, 2024
bfe7a99
save
AskAlexSharov Nov 5, 2024
1ea4559
save
AskAlexSharov Nov 5, 2024
9b2f9a6
save
AskAlexSharov Nov 5, 2024
fe2a714
save
AskAlexSharov Nov 5, 2024
50c468d
save
AskAlexSharov Nov 5, 2024
6029d89
save
AskAlexSharov Nov 5, 2024
b79682e
save
AskAlexSharov Nov 5, 2024
be6699d
save
AskAlexSharov Nov 5, 2024
e03b745
save
AskAlexSharov Nov 5, 2024
963dbca
save
AskAlexSharov Nov 5, 2024
5f44189
save
AskAlexSharov Nov 5, 2024
3b88d2d
save
AskAlexSharov Nov 5, 2024
fb32f84
save
AskAlexSharov Nov 5, 2024
394fbf3
save
AskAlexSharov Nov 5, 2024
15d7195
save
AskAlexSharov Nov 5, 2024
4b67a52
save
AskAlexSharov Nov 5, 2024
6b06087
save
AskAlexSharov Nov 5, 2024
a7e5382
save
AskAlexSharov Nov 6, 2024
ceb153f
save
AskAlexSharov Nov 6, 2024
cf43ae6
save
AskAlexSharov Nov 6, 2024
7b1806c
save
AskAlexSharov Nov 6, 2024
8dd0c27
save
AskAlexSharov Nov 6, 2024
4efd96b
Merge branch 'main' into eth_rpc_acc_range
AskAlexSharov Nov 6, 2024
37e4bf6
save
AskAlexSharov Nov 6, 2024
0f7293e
save
AskAlexSharov Nov 6, 2024
13c83cd
save
AskAlexSharov Nov 6, 2024
46e4da7
save
AskAlexSharov Nov 6, 2024
b11c89d
Merge branch 'main' into eth_rpc_acc_range
AskAlexSharov Nov 6, 2024
1021f83
save
AskAlexSharov Nov 6, 2024
8e8a0e8
save
AskAlexSharov Nov 6, 2024
1436827
Merge branch 'main' into eth_rpc_acc_range
AskAlexSharov Nov 7, 2024
8d5f89a
save
AskAlexSharov Nov 7, 2024
9c828f3
save
AskAlexSharov Nov 7, 2024
ccb381f
save
AskAlexSharov Nov 7, 2024
906ccfc
save
AskAlexSharov Nov 7, 2024
0c4e0ad
save
AskAlexSharov Nov 7, 2024
49f96cd
save
AskAlexSharov Nov 7, 2024
5ef790f
save
AskAlexSharov Nov 7, 2024
1be1647
save
AskAlexSharov Nov 7, 2024
92f174f
save
AskAlexSharov Nov 7, 2024
dad88ab
save
AskAlexSharov Nov 7, 2024
ca58912
save
AskAlexSharov Nov 7, 2024
2e0791d
save
AskAlexSharov Nov 7, 2024
2c82174
save
AskAlexSharov Nov 7, 2024
343cada
save
AskAlexSharov Nov 7, 2024
139ae0a
save
AskAlexSharov Nov 7, 2024
44d8e84
save
AskAlexSharov Nov 7, 2024
02d652d
save
AskAlexSharov Nov 7, 2024
a075260
save
AskAlexSharov Nov 7, 2024
891fa47
save
AskAlexSharov Nov 7, 2024
292360a
save
AskAlexSharov Nov 7, 2024
38f0106
save
AskAlexSharov Nov 7, 2024
9cc7154
save
AskAlexSharov Nov 7, 2024
31d4420
save
AskAlexSharov Nov 7, 2024
13aa55c
save
AskAlexSharov Nov 7, 2024
c984c5a
save
AskAlexSharov Nov 7, 2024
367f79b
save
AskAlexSharov Nov 7, 2024
b400ef7
save
AskAlexSharov Nov 7, 2024
f393123
save
AskAlexSharov Nov 7, 2024
926866d
save
AskAlexSharov Nov 7, 2024
06d0edc
save
AskAlexSharov Nov 7, 2024
c634452
save
AskAlexSharov Nov 7, 2024
da7d0db
save
AskAlexSharov Nov 7, 2024
6b4dc99
save
AskAlexSharov Nov 7, 2024
fb9f3e3
save
AskAlexSharov Nov 7, 2024
29d69b8
save
AskAlexSharov Nov 7, 2024
a2c1b24
save
AskAlexSharov Nov 7, 2024
dfd30be
save
AskAlexSharov Nov 7, 2024
84142b7
save
AskAlexSharov Nov 7, 2024
0791d6c
save
AskAlexSharov Nov 7, 2024
bbe5632
save
AskAlexSharov Nov 7, 2024
4bb1d6e
save
AskAlexSharov Nov 7, 2024
a5da596
save
AskAlexSharov Nov 7, 2024
ec809e5
save
AskAlexSharov Nov 7, 2024
07560c8
save
AskAlexSharov Nov 7, 2024
fc84cfe
save
AskAlexSharov Nov 7, 2024
5faba45
save
AskAlexSharov Nov 7, 2024
4fb2ce2
save
AskAlexSharov Nov 7, 2024
a30ce2a
save
AskAlexSharov Nov 7, 2024
354355a
save
AskAlexSharov Nov 7, 2024
929f39a
save
AskAlexSharov Nov 7, 2024
0716797
save
AskAlexSharov Nov 7, 2024
860e1aa
save
AskAlexSharov Nov 7, 2024
286ad8f
save
AskAlexSharov Nov 7, 2024
d8bb43d
save
AskAlexSharov Nov 7, 2024
1b73aa5
save
AskAlexSharov Nov 7, 2024
ea221dd
save
AskAlexSharov Nov 7, 2024
9702dce
save
AskAlexSharov Nov 7, 2024
f5fe1a3
save
AskAlexSharov Nov 7, 2024
0bdf15a
save
AskAlexSharov Nov 7, 2024
484e5d8
save
AskAlexSharov Nov 8, 2024
6f5c853
save
AskAlexSharov Nov 8, 2024
0d24567
save
AskAlexSharov Nov 8, 2024
5aa8df8
save
AskAlexSharov Nov 8, 2024
0b95712
save
AskAlexSharov Nov 8, 2024
25bcada
save
AskAlexSharov Nov 8, 2024
fbf265d
save
AskAlexSharov Nov 8, 2024
ad5d9ba
save
AskAlexSharov Nov 8, 2024
5e2304b
save
AskAlexSharov Nov 8, 2024
544062e
save
AskAlexSharov Nov 8, 2024
b8bfb6a
save
AskAlexSharov Nov 8, 2024
a607a01
save
AskAlexSharov Nov 8, 2024
aa1bb1c
save
AskAlexSharov Nov 8, 2024
205368b
save
AskAlexSharov Nov 8, 2024
e944060
save
AskAlexSharov Nov 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions core/state/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import (
"encoding/json"
"fmt"
"time"

libcommon "github.com/erigontech/erigon-lib/common"
"github.com/erigontech/erigon-lib/common/hexutility"
Expand Down Expand Up @@ -135,6 +136,10 @@
}
}

var TooMuchIterations = fmt.Errorf("[rpc] Dumper: too much iterations protection triggered")

Check failure on line 139 in core/state/dump.go

View workflow job for this annotation

GitHub Actions / lint

fmt.Errorf can be replaced with errors.New (perfsprint)

const DumperIterationsHardLimit = 10_000_000

func (d *Dumper) DumpToCollector(c DumpCollector, excludeCode, excludeStorage bool, startAddress libcommon.Address, maxResults int) ([]byte, error) {
var emptyCodeHash = crypto.Keccak256Hash(nil)
var emptyHash = libcommon.Hash{}
Expand All @@ -148,6 +153,7 @@

c.OnRoot(emptyHash) // We do not calculate the root

fmt.Printf("[dbg] DumpToCollector limits: %t, %t, %d\n", excludeCode, excludeStorage, maxResults)
ttx := d.db.(kv.TemporalTx)
txNum, err := d.txNumsReader.Min(ttx, d.blockNumber+1)
if err != nil {
Expand All @@ -158,11 +164,15 @@
return nil, err
}

var hardLimit = DumperIterationsHardLimit

t := time.Now()
var nextKey []byte
it, err := ttx.DomainRange(kv.AccountsDomain, startAddress[:], nil, txNum, order.Asc, maxResults)
if err != nil {
return nil, err
}
fmt.Printf("[dbg] after DomainRange: %s\n", time.Since(t))
defer it.Close()
for it.HasNext() {
k, v, err := it.Next()
Expand All @@ -171,11 +181,13 @@
}
if maxResults > 0 && numberOfResults >= maxResults {
nextKey = append(nextKey[:0], k...)
fmt.Printf("[dbg] dumper iter acc. break: nextKey %x\n", nextKey)
break
}
if len(v) == 0 {
continue
}
fmt.Printf("[dbg] dumper iter acc: %x\n", k)

if e := accounts.DeserialiseV3(&acc, v); e != nil {
return nil, fmt.Errorf("decoding %x for %x: %w", v, k, e)
Expand Down Expand Up @@ -204,7 +216,14 @@
addrList = append(addrList, libcommon.BytesToAddress(k))

numberOfResults++

if hardLimit--; hardLimit < 0 {
return nil, TooMuchIterations
}
}
it.Close()

fmt.Printf("[dbg] first loop done: %d\n", len(addrList))

for i, addr := range addrList {
account := accountList[i]
Expand All @@ -226,10 +245,16 @@
continue // Skip deleted entries
}
loc := k[20:]
fmt.Printf("[dbg] dumper iter storage: %x, %x\n", k[:20], k[20:])
account.Storage[libcommon.BytesToHash(loc).String()] = common.Bytes2Hex(vs)
h, _ := libcommon.HashData(loc)
t.Update(h.Bytes(), libcommon.Copy(vs))

if hardLimit--; hardLimit < 0 {
return nil, TooMuchIterations
}
}
r.Close()

account.Root = t.Hash().Bytes()
}
Expand Down
5 changes: 2 additions & 3 deletions erigon-lib/seg/decompress.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,11 @@ import (
"time"
"unsafe"

"github.com/erigontech/erigon-lib/common/assert"
"github.com/erigontech/erigon-lib/log/v3"

"github.com/c2h5oh/datasize"

"github.com/erigontech/erigon-lib/common/assert"
"github.com/erigontech/erigon-lib/common/dbg"
"github.com/erigontech/erigon-lib/log/v3"
"github.com/erigontech/erigon-lib/mmap"
)

Expand Down
7 changes: 3 additions & 4 deletions erigon-lib/state/aggregator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,11 @@ import (
"testing"
"time"

"github.com/erigontech/erigon-lib/commitment"

"github.com/erigontech/erigon-lib/common/background"

"github.com/c2h5oh/datasize"

"github.com/erigontech/erigon-lib/commitment"
"github.com/erigontech/erigon-lib/common"
"github.com/erigontech/erigon-lib/common/background"
"github.com/erigontech/erigon-lib/common/datadir"
"github.com/erigontech/erigon-lib/common/length"
"github.com/erigontech/erigon-lib/etl"
Expand Down
4 changes: 3 additions & 1 deletion erigon-lib/state/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -1962,10 +1962,12 @@ func (dt *DomainRoTx) DomainRange(ctx context.Context, tx kv.Tx, fromKey, toKey
//if err != nil {
// return nil, err
//}
histStateIt, err := dt.ht.WalkAsOf(ctx, ts, fromKey, toKey, tx, limit)
fmt.Printf("[dbg] DomainRange 1: %s, %x, %x\n", dt.d.name, fromKey, toKey)
histStateIt, err := dt.ht.WalkAsOf(ctx, ts, fromKey, toKey, asc, limit, tx)
if err != nil {
return nil, err
}
fmt.Printf("[dbg] DomainRange 2: %s\n", dt.d.name)
lastestStateIt, err := dt.DomainRangeLatest(tx, fromKey, toKey, limit)
if err != nil {
return nil, err
Expand Down
3 changes: 1 addition & 2 deletions erigon-lib/state/domain_shared_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,10 @@ import (
"github.com/holiman/uint256"
"github.com/stretchr/testify/require"

"github.com/erigontech/erigon-lib/common/length"
"github.com/erigontech/erigon-lib/kv"
"github.com/erigontech/erigon-lib/kv/rawdbv3"
"github.com/erigontech/erigon-lib/log/v3"

"github.com/erigontech/erigon-lib/common/length"
"github.com/erigontech/erigon-lib/types"
)

Expand Down
71 changes: 66 additions & 5 deletions erigon-lib/state/domain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1275,6 +1275,7 @@ func filledDomainFixedSize(t *testing.T, keysCount, txCount, aggStep uint64, log

func generateTestDataForDomainCommitment(tb testing.TB, keySize1, keySize2, totalTx, keyTxsLimit, keyLimit uint64) map[string]map[string][]upd {
tb.Helper()
defer func(t time.Time) { fmt.Printf("domain_test.go:1262: %s\n", time.Since(t)) }(time.Now())

doms := make(map[string]map[string][]upd)
r := newRnd(31)
Expand Down Expand Up @@ -1328,7 +1329,6 @@ func generateRandomKey(r *rndGen, size uint64) string {
func generateRandomKeyBytes(r *rndGen, size uint64) []byte {
key := make([]byte, size)
r.Read(key)

return key
}

Expand Down Expand Up @@ -1403,8 +1403,8 @@ func TestDomain_GetAfterAggregation(t *testing.T) {
defer tx.Rollback()

d.historyLargeValues = false
d.History.compression = seg.CompressKeys | seg.CompressVals
d.compression = seg.CompressKeys | seg.CompressVals
d.History.compression = seg.CompressNone //seg.CompressKeys | seg.CompressVals
d.compression = seg.CompressNone //seg.CompressKeys | seg.CompressVals
d.filenameBase = kv.FileCommitmentDomain

dc := d.BeginFilesRo()
Expand Down Expand Up @@ -1464,6 +1464,67 @@ func TestDomain_GetAfterAggregation(t *testing.T) {
}
}

func TestDomainRange(t *testing.T) {
db, d := testDbAndDomainOfStep(t, 25, log.New())
require := require.New(t)

tx, err := db.BeginRw(context.Background())
require.NoError(err)
defer tx.Rollback()

d.historyLargeValues = false
d.History.compression = seg.CompressNone // seg.CompressKeys | seg.CompressVals
d.compression = seg.CompressNone // seg.CompressKeys | seg.CompressVals
d.filenameBase = kv.FileAccountDomain

dc := d.BeginFilesRo()
defer d.Close()
writer := dc.NewWriter()
defer writer.close()

keySize1 := uint64(4)
keySize2 := uint64(4)
totalTx := uint64(300)
keyTxsLimit := uint64(2)
keyLimit := uint64(10)

// put some kvs
data := generateTestData(t, keySize1, keySize2, totalTx, keyTxsLimit, keyLimit)
for key, updates := range data {
p := []byte{}
for i := 0; i < len(updates); i++ {
writer.SetTxNum(updates[i].txNum)
err = writer.PutWithPrev([]byte(key), nil, updates[i].value, p, 0)
require.NoError(err)
p = common.Copy(updates[i].value)
}
}
writer.SetTxNum(totalTx)

err = writer.Flush(context.Background(), tx)
require.NoError(err)

// aggregate
collateAndMerge(t, db, tx, d, totalTx)
require.NoError(tx.Commit())

tx, err = db.BeginRw(context.Background())
require.NoError(err)
defer tx.Rollback()
dc.Close()

dc = d.BeginFilesRo()
defer dc.Close()

//it, err := dc.DomainRangeLatest(tx, nil, nil, -1)
it, err := dc.DomainRange(context.Background(), tx, nil, nil, 190, order.Asc, -1)
require.NoError(err)
keys, vals, err := stream.ToArrayKV(it)
require.NoError(err)
fmt.Printf("keys: %x\n", keys)
fmt.Printf("vals: %x\n", vals)
}

func TestDomain_CanPruneAfterAggregation(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -1981,10 +2042,10 @@ func TestDomain_Unwind(t *testing.T) {
uc := d.BeginFilesRo()
defer uc.Close()

et, err := ectx.ht.WalkAsOf(context.Background(), unwindTo-1, nil, nil, etx, -1)
et, err := ectx.ht.WalkAsOf(context.Background(), unwindTo-1, nil, nil, order.Asc, -1, etx)
require.NoError(t, err)

ut, err := uc.ht.WalkAsOf(context.Background(), unwindTo-1, nil, nil, utx, -1)
ut, err := uc.ht.WalkAsOf(context.Background(), unwindTo-1, nil, nil, order.Asc, -1, utx)
require.NoError(t, err)

compareIterators(t, et, ut)
Expand Down
Loading
Loading