erigon-pulse/cmd/integration/commands/flags.go
ledgerwatch 5ea590c18e
State cache switching writes to reads during commit (#1368)
* State cache init

* More code

* Fix lint

* More tests

* More tests

* More tests

* Fix test

* Transformations

* remove writeQueue, before fixing the tests

* Fix tests

* Add more tests, incarnation to the code items

* Fix lint

* Fix lint

* Remove shards prototype, add incarnation to the state reader code

* Clean up and replace cache in call_traces stage

* fix flaky test

* Save changes

* Readers to use addrHash, writes - addresses

* Fix lint

* Fix lint

* More accurate tracking of size

* Optimise for smaller write batches

* Attempt to integrate state cache into Execution stage

* cacheSize to default flags

* Print correct cache sizes and batch sizes

* cacheSize in the integration

* Fix tests

* Fix lint

* Remove print

* Fix exec stage

* Fix test

* Refresh sequence on write

* No double increment

* heap.Remove

* Try to fix alignment

* Refactoring, adding hashItems

* More changes

* Fix compile errors

* Fix lint

* Wrapping cached reader

* Wrap writer into cached writer

* Turn state cache off by default

* Fix plain state writer

* Fix for code/storage mixup

* Fix tests

* Fix clique test

* Better fix for the tests

* Add test and fix some more

* Fix compile error|

* More functions

* Fixes

* Fix for the tests

* sepatate DeletedFlag and AbsentFlag

* Minor fixes

* Test refactoring

* More changes

* Fix some tests

* More test fixes

* More test fixes

* Fix lint

* Move blockchain_test to be able to use stagedsync

* More fixes

* Fixes and cleanup

* Fix tests in turbo/stages

* Fix lint

* Fix lint

* Intemediate

* Fix tests

* Intemediate

* More fixes

* Compilation fixes

* More fixes

* Fix compile errors

* More test fixes

* More fixes

* More test fixes

* Fix compile error

* Fixes

* Fix

* Fix

* More fixes

* Fixes

* More fixes and cleanup

* Further fix

* Check gas used and bloom with header

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
2020-12-08 09:44:29 +00:00

101 lines
3.3 KiB
Go

package commands
import (
"github.com/ledgerwatch/turbo-geth/node"
"github.com/spf13/cobra"
)
var (
chaindata string
database string
snapshotMode string
snapshotDir string
compact bool
toChaindata string
referenceChaindata string
block uint64
unwind uint64
unwindEvery uint64
cacheSizeStr string
batchSizeStr string
reset bool
bucket string
datadir string
mapSizeStr string
freelistReuse int
migration string
silkwormPath string
)
func must(err error) {
if err != nil {
panic(err)
}
}
func withChaindata(cmd *cobra.Command) {
cmd.Flags().StringVar(&chaindata, "chaindata", "", "path to the db")
must(cmd.MarkFlagDirname("chaindata"))
must(cmd.MarkFlagRequired("chaindata"))
cmd.Flags().StringVar(&snapshotMode, "snapshotMode", "", "set of snapshots to use")
cmd.Flags().StringVar(&snapshotDir, "snapshotDir", "", "snapshot dir")
cmd.Flags().StringVar(&database, "database", "", "lmdb|mdbx")
}
func withLmdbFlags(cmd *cobra.Command) {
cmd.Flags().StringVar(&mapSizeStr, "lmdb.mapSize", "", "map size for LMDB")
cmd.Flags().IntVar(&freelistReuse, "maxFreelistReuse", 0, "Find a big enough contiguous page range for large values in freelist is hard just allocate new pages and even don't try to search if value is bigger than this limit. Measured in pages.")
}
func withCompact(cmd *cobra.Command) {
cmd.Flags().BoolVar(&compact, "compact", false, "compact db file. if remove much data form LMDB it slows down tx.Commit because it performs `realloc()` of free_list every commit")
}
func withReferenceChaindata(cmd *cobra.Command) {
cmd.Flags().StringVar(&referenceChaindata, "reference_chaindata", "", "path to the 2nd (reference/etalon) db")
must(cmd.MarkFlagDirname("reference_chaindata"))
}
func withToChaindata(cmd *cobra.Command) {
cmd.Flags().StringVar(&toChaindata, "to_chaindata", "", "target chaindata")
must(cmd.MarkFlagDirname("to_chaindata"))
}
func withBlock(cmd *cobra.Command) {
cmd.Flags().Uint64Var(&block, "block", 0, "block test at this block")
}
func withUnwind(cmd *cobra.Command) {
cmd.Flags().Uint64Var(&unwind, "unwind", 0, "how much blocks unwind on each iteration")
}
func withUnwindEvery(cmd *cobra.Command) {
cmd.Flags().Uint64Var(&unwindEvery, "unwind_every", 0, "each iteration test will move forward `--unwind_every` blocks, then unwind `--unwind` blocks")
}
func withReset(cmd *cobra.Command) {
cmd.Flags().BoolVar(&reset, "reset", false, "reset given stage")
}
func withBucket(cmd *cobra.Command) {
cmd.Flags().StringVar(&bucket, "bucket", "", "reset given stage")
}
func withDatadir(cmd *cobra.Command) {
cmd.Flags().StringVar(&datadir, "datadir", node.DefaultDataDir(), "data directory for temporary ELT files")
}
func withBatchSize(cmd *cobra.Command) {
cmd.Flags().StringVar(&cacheSizeStr, "cacheSize", "0", "cache size for execution stage")
cmd.Flags().StringVar(&batchSizeStr, "batchSize", "512M", "batch size for execution stage")
}
func withMigration(cmd *cobra.Command) {
cmd.Flags().StringVar(&migration, "migration", "", "action to apply to given migration")
}
func withSilkworm(cmd *cobra.Command) {
cmd.Flags().StringVar(&silkwormPath, "silkworm", "", "file path of libsilkworm_tg_api.so")
must(cmd.MarkFlagFilename("silkworm"))
}