mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 11:41:19 +00:00
add flag txpool.commit_every (#7062)
Adds flag _--txpool.commit_every_ to control how often transactions should be committed to the storage [Related Issue](https://github.com/ledgerwatch/erigon/issues/7002)
This commit is contained in:
parent
f69f7095bb
commit
4e5dce1365
@ -2,8 +2,10 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math/big"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
@ -50,6 +52,8 @@ var (
|
||||
priceLimit uint64
|
||||
accountSlots uint64
|
||||
priceBump uint64
|
||||
|
||||
commitEvery time.Duration
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -71,6 +75,7 @@ func init() {
|
||||
rootCmd.PersistentFlags().Uint64Var(&priceLimit, "txpool.pricelimit", txpool.DefaultConfig.MinFeeCap, "Minimum gas price (fee cap) limit to enforce for acceptance into the pool")
|
||||
rootCmd.PersistentFlags().Uint64Var(&accountSlots, "txpool.accountslots", txpool.DefaultConfig.AccountSlots, "Minimum number of executable transaction slots guaranteed per account")
|
||||
rootCmd.PersistentFlags().Uint64Var(&priceBump, "txpool.pricebump", txpool.DefaultConfig.PriceBump, "Price bump percentage to replace an already existing transaction")
|
||||
rootCmd.PersistentFlags().DurationVar(&commitEvery, utils.TxPoolCommitEveryFlag.Name, utils.TxPoolCommitEveryFlag.Value, utils.TxPoolCommitEveryFlag.Usage)
|
||||
rootCmd.Flags().StringSliceVar(&traceSenders, utils.TxPoolTraceSendersFlag.Name, []string{}, utils.TxPoolTraceSendersFlag.Usage)
|
||||
}
|
||||
|
||||
@ -131,7 +136,12 @@ func doTxpool(ctx context.Context) error {
|
||||
dirs := datadir.New(datadirCli)
|
||||
|
||||
cfg.DBDir = dirs.TxPool
|
||||
cfg.CommitEvery = 30 * time.Second
|
||||
|
||||
randDuration, err := rand.Int(rand.Reader, big.NewInt(int64(2*time.Second)))
|
||||
if err != nil {
|
||||
return fmt.Errorf("generating random additional value for --txpool.commit.every: %w", err)
|
||||
}
|
||||
cfg.CommitEvery = commitEvery + time.Duration(randDuration.Int64())
|
||||
cfg.PendingSubPoolLimit = pendingPoolLimit
|
||||
cfg.BaseFeeSubPoolLimit = baseFeePoolLimit
|
||||
cfg.QueuedSubPoolLimit = queuedPoolLimit
|
||||
|
@ -19,12 +19,14 @@ package utils
|
||||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"math/big"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/c2h5oh/datasize"
|
||||
"github.com/ledgerwatch/erigon-lib/chain"
|
||||
@ -193,6 +195,11 @@ var (
|
||||
Usage: "Comma separared list of addresses, whoes transactions will traced in transaction pool with debug printing",
|
||||
Value: "",
|
||||
}
|
||||
TxPoolCommitEveryFlag = cli.DurationFlag{
|
||||
Name: "txpool.commit.every",
|
||||
Usage: "How often transactions should be committed to the storage",
|
||||
Value: txpool.DefaultConfig.CommitEvery,
|
||||
}
|
||||
// Miner settings
|
||||
MiningEnabledFlag = cli.BoolFlag{
|
||||
Name: "mine",
|
||||
@ -1262,6 +1269,14 @@ func setTxPool(ctx *cli.Context, cfg *core.TxPoolConfig) {
|
||||
cfg.TracedSenders[i] = string(sender[:])
|
||||
}
|
||||
}
|
||||
if ctx.IsSet(TxPoolCommitEveryFlag.Name) {
|
||||
cfg.CommitEvery = ctx.Duration(TxPoolCommitEveryFlag.Name)
|
||||
randDuration, err := rand.Int(rand.Reader, big.NewInt(int64(2*time.Second)))
|
||||
if err != nil {
|
||||
Fatalf("Generating random additional value for --txpool.commit.every: %s", err)
|
||||
}
|
||||
cfg.CommitEvery += time.Duration(randDuration.Int64())
|
||||
}
|
||||
}
|
||||
|
||||
func setEthash(ctx *cli.Context, datadir string, cfg *ethconfig.Config) {
|
||||
|
@ -77,6 +77,7 @@ type TxPoolConfig struct {
|
||||
Lifetime time.Duration // Maximum amount of time non-executable transaction are queued
|
||||
StartOnInit bool
|
||||
TracedSenders []string // List of senders for which tx pool should print out debugging info
|
||||
CommitEvery time.Duration
|
||||
}
|
||||
|
||||
// DeprecatedDefaultTxPoolConfig contains the default configurations for the transaction
|
||||
@ -105,6 +106,7 @@ var DefaultTxPool2Config = func(pool1Cfg TxPoolConfig) txpool.Config {
|
||||
cfg.LogEvery = 1 * time.Minute
|
||||
cfg.CommitEvery = 5 * time.Minute
|
||||
cfg.TracedSenders = pool1Cfg.TracedSenders
|
||||
cfg.CommitEvery = pool1Cfg.CommitEvery
|
||||
|
||||
return cfg
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ var DefaultFlags = []cli.Flag{
|
||||
&utils.TxPoolGlobalQueueFlag,
|
||||
&utils.TxPoolLifetimeFlag,
|
||||
&utils.TxPoolTraceSendersFlag,
|
||||
&utils.TxPoolCommitEveryFlag,
|
||||
&PruneFlag,
|
||||
&PruneHistoryFlag,
|
||||
&PruneReceiptFlag,
|
||||
|
@ -2,6 +2,7 @@ package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/ledgerwatch/erigon-lib/txpool"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -194,6 +195,12 @@ var (
|
||||
Usage: "Maximum amount of time to wait for the answer from EVM call.",
|
||||
Value: rpccfg.DefaultEvmCallTimeout,
|
||||
}
|
||||
|
||||
TxPoolCommitEvery = cli.DurationFlag{
|
||||
Name: "txpool.commit.every",
|
||||
Usage: "How often transactions should be committed to the storage",
|
||||
Value: txpool.DefaultConfig.CommitEvery,
|
||||
}
|
||||
)
|
||||
|
||||
func ApplyFlagsForEthConfig(ctx *cli.Context, cfg *ethconfig.Config) {
|
||||
|
Loading…
Reference in New Issue
Block a user