erigon-pulse/cmd/integration
Igor Mandrigin 8b4d31f661
Stable 2021 10 02 (#2794)
* begin 2021.10.2 release cycle

* Revert "rpcdaemon: (#2752)" (#2762)

This reverts commit 2afd028d3d.

* Pool v2: --txpool.pricelimit support (#2763)

* --txpoo.pricelimit support

* Pool v2: --txpool.accountslots flag support (#2765)

* Update signal_windows.go (#2767)

Trap os.interrupt instead of SIGINT and SIGTERM

* Update stage_finish.go : notifications to rpc daemon (#2755)

* Dockerfile: switch to go1.17 and alpine3.14 (#2766)

* add logs in recoverFromDb func (#2769)

* eip 1559 in miner (#2773)

* Inner errors (#2774)

* Clean up DEBUG category logs (#2776)

- move many DEBUG logs into TRACE category

* Decoding incarnation implemented (#2764)

* WIP decoding incarnation specifically

* Changed decodeIncarnation to be an external function

* added tests to for decoding incarnations

* ran gofmt -w -s

* changed test name, and changed incarnations to 4

* Created a test which tests if it returns an error when there is one

* ran gofmt

* Capitalized all tests and made breaking test

* added an error check

* changed decodingForStorage for decodingIncarnationFromStorage

* ran gofmt -w -s

* No senders is fine (#2775)

* IntermediateHash stage - switch from incremental to re-generate mode - if jump > 100K blocks (#2781)

* Enable "State stream" by default (#2780)

* No json rpc streaming (#2779)

* reduce_bach_concurrency_default

* RPCDaemon: reduce --rpc.batch.concurrency default from 50 to 2 (#2784)

* Integration to print right stage in logs (#2785)

* remove debug prints

* RemoteDB: don't spend time to close cursors on end of tx - server will cleanup everything well (#2786)

* Fermion genesis block (#2787)

* updated Fermion genesis block

* Updated Fermion genesis block: added precompiles

* Rpcdaemon: add  --tevm flag to enable experiment (#2788)

* Reworkings of state compression experiments (#2790)

* Changes

* Progress

* Another way

* More

* More

* Produce encoding

* Add uncoded characters

* cleanup

* Add sortdict

* Fixes

* Use patricia from erigon-lib

* Cleanup

* Switch to dynamic programming, optimise allocations in FindMatches

* Optimise allocations

* Reduce allocations

* Switch to main branch of erigon-lib, reduce allocations further

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro.local>

* Ignore MaxPeers param for staticpeers (#2789)

Co-authored-by: Aleksandr Borodulin <a.borodulin@axioma.lv>

* less warnings

* Update skip_analysis.go (#2792)

* Extend preverified hashes for mainnet and ropsten (#2793)

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>

Co-authored-by: Alex Sharov <AskAlexSharov@gmail.com>
Co-authored-by: Andrea Lanfranchi <andrea.lanfranchi@gmail.com>
Co-authored-by: Enrique Jose  Avila Asapche <eavilaasapche@gmail.com>
Co-authored-by: e-danko <89912851+e-danko@users.noreply.github.com>
Co-authored-by: ledgerwatch <akhounov@gmail.com>
Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro.local>
Co-authored-by: Alexandr Borodulin <sashaborodulin@gmail.com>
Co-authored-by: Aleksandr Borodulin <a.borodulin@axioma.lv>
2021-10-07 15:02:18 +03:00
..
commands Stable 2021 10 02 (#2794) 2021-10-07 15:02:18 +03:00
main.go rename (#1978) 2021-05-20 19:25:53 +01:00
Readme.md Pruning for: exec, log_index, tx_lookup, history stages (#2399) 2021-07-20 21:03:19 +01:00

Integration - tool to run Erigon stages in custom way: run/reset single stage, run all stages but reorg every X blocks, etc...

Examples

All commands require parameter --datadir=<datadir> - I will skip it for readability.

integration --help
integration print_stages

# Run single stage 
integration stage_senders 
integration stage_exec  
integration stage_exec --block=1_000_000 # stop at 1M block
integration stage_hash_state 
integration stage_trie
integration stage_history
integration stage_tx_lookup

# Unwind single stage 10 blocks backward
integration stage_exec --unwind=10

# Drop data of single stage 
integration stage_exec --reset     
integration stage_history --reset

# Unwind single stage N blocks backward
integration stage_exec --unwind=N 
integration stage_history --unwind=N

# Run stage prune to block N
integration stage_exec --prune.to=N     
integration stage_history --prune.to=N
... 

# hack which allows to force clear unwind stack of all stages
clear_unwind_stack

For testing run all stages in "N blocks forward M blocks re-org" loop

Pre-requirements of state_stages command:

  • Headers/Bodies must be downloaded
  • TxSenders stage must be executed
make all
./build/bin/integration state_stages --datadir=<datadir> --unwind=10 --unwind.every=20 --pprof
integration reset_state # drops all stages after Senders stage (including it's db tables DB tables)

For example:

--unwind=1 --unwind.every=10  # 10 blocks forward, 1 block back, 10 blocks forward, ...
--unwind=10 --unwind.every=1  # 1 block forward, 10 blocks back, 1 blocks forward, ...
--unwind=10  # 10 blocks back, then stop
--integrity.fast=false --integrity.slow=false # it performs DB integrity checks each step. You can disable slow or fast checks.
--block # stop at exact blocks
--chaindata.reference # When finish all cycles, does comparison to this db file.

"Wrong trie root" problem - temporary solution

make all
./build/bin/integration stage_hash_state --datadir=<datadir> --reset
./build/bin/integration stage_trie --datadir=<datadir> --reset
# Then run TurobGeth as usually. It will take 2-3 hours to re-calculate dropped db tables