diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 35694cca6b6aa96fe042e7d8a75a0d283bc79ffa..ee8ad576473d3214e86ef53e8d50e98b0c35fde0 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -96,6 +96,11 @@ var ( Usage: "Data directory for the databases", Value: DirectoryString(paths.DefaultDataDir()), } + MdbxAugmentLimitFlag = DirectoryFlag{ + Name: "mdbx.augment.limit", + Usage: "Data directory for the databases", + Value: DirectoryString(paths.DefaultDataDir()), + } AncientFlag = DirectoryFlag{ Name: "datadir.ancient", Usage: "Data directory for ancient chain segments (default = inside chaindata)", @@ -877,6 +882,10 @@ func setDataDir(ctx *cli.Context, cfg *node.Config) { } else { cfg.DataDir = DataDirForNetwork(cfg.DataDir, ctx.GlobalString(ChainFlag.Name)) } + + if ctx.GlobalIsSet(MdbxAugmentLimitFlag.Name) { + cfg.MdbxAugumentLimit = ctx.GlobalUint64(MdbxAugmentLimitFlag.Name) + } } func setDataDirCobra(f *pflag.FlagSet, cfg *node.Config) { diff --git a/go.mod b/go.mod index 3a07d6de4f9bfafd3d32789d52fbfd5e2fcdeb86..103750831e039c8cec03a4a075812c384fbee86c 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( github.com/json-iterator/go v1.1.11 github.com/julienschmidt/httprouter v1.3.0 github.com/kevinburke/go-bindata v3.21.0+incompatible - github.com/ledgerwatch/erigon-lib v0.0.0-20210926124830-9b3efaa33e2a + github.com/ledgerwatch/erigon-lib v0.0.0-20210927024337-0468c7c3a0fe github.com/ledgerwatch/log/v3 v3.3.1 github.com/ledgerwatch/secp256k1 v0.0.0-20210626115225-cd5cd00ed72d github.com/logrusorgru/aurora/v3 v3.0.0 diff --git a/go.sum b/go.sum index 9e9a00939cc1d39420ebc3087d888ee290e6dc9f..7e1fda292daeb76effeb292fce5a07d168ac5440 100644 --- a/go.sum +++ b/go.sum @@ -494,8 +494,8 @@ github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3P github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/ledgerwatch/erigon-lib v0.0.0-20210926124830-9b3efaa33e2a h1:zK1CbuTV8MClnVuxH35a4CqAXcJoEcAaqBLb9DqBjTc= -github.com/ledgerwatch/erigon-lib v0.0.0-20210926124830-9b3efaa33e2a/go.mod h1:WgyjBACSDhgfepaaDJIbzd2TV868EjOrp2ILnEMKspY= +github.com/ledgerwatch/erigon-lib v0.0.0-20210927024337-0468c7c3a0fe h1:Sh5g1jIm43Jp8XAJ/EIT3cza2925u7mE8AY0EOW7vE4= +github.com/ledgerwatch/erigon-lib v0.0.0-20210927024337-0468c7c3a0fe/go.mod h1:WgyjBACSDhgfepaaDJIbzd2TV868EjOrp2ILnEMKspY= github.com/ledgerwatch/log/v3 v3.3.1 h1:HmvLeTEvtCtqSvtu4t/a5MAdcLfeBcbIeowXbLYuzLc= github.com/ledgerwatch/log/v3 v3.3.1/go.mod h1:S3VJqhhVX32rbp1JyyvhJou12twtFwNEPESBgpbNkRk= github.com/ledgerwatch/secp256k1 v0.0.0-20210626115225-cd5cd00ed72d h1:/IKMrJdfRsoYNc36PXqP4xMH3vhW/8IQyBKGQbKZUno= diff --git a/node/config.go b/node/config.go index 1dde2bdfbf5287aecc7b90598e5bb13dcbd8a9a4..576d302930120d335431b4a3e2b133fc22b3fe10 100644 --- a/node/config.go +++ b/node/config.go @@ -158,6 +158,8 @@ type Config struct { AllowUnprotectedTxs bool `toml:",omitempty"` TLSKeyFile string TLSCACert string + + MdbxAugumentLimit uint64 } // IPCEndpoint resolves an IPC endpoint based on a configured value, taking into diff --git a/node/node.go b/node/node.go index df2071b387954dcb70d591bb4b38d8016c2e8559..916d4c2c6b7addc80b35d6a8f2ac49b4188769ae 100644 --- a/node/node.go +++ b/node/node.go @@ -20,7 +20,6 @@ import ( "context" "errors" "fmt" - "github.com/ledgerwatch/erigon/params" "net" "net/http" "os" @@ -29,6 +28,8 @@ import ( "strings" "sync" + "github.com/ledgerwatch/erigon/params" + "github.com/gofrs/flock" "github.com/ledgerwatch/erigon-lib/kv" "github.com/ledgerwatch/erigon-lib/kv/mdbx" @@ -524,6 +525,9 @@ func OpenDatabase(config *Config, logger log.Logger, label kv.Label) (kv.RwDB, e if exclusive { opts = opts.Exclusive() } + if label == kv.ChainDB { + opts.AugumentLimit(config.MdbxAugumentLimit) + } return opts.Open() } var err error diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index 10e14ce4e4b34ebb3586833b0a11141ad88fd3cd..160e770ee7ea578006e584687f54c326efd85cb5 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -9,6 +9,7 @@ import ( // DefaultFlags contains all flags that are used and supported by Erigon binary. var DefaultFlags = []cli.Flag{ utils.DataDirFlag, + utils.MdbxAugmentLimitFlag, utils.EthashDatasetDirFlag, utils.TxPoolV2Flag, utils.TxPoolDisableFlag,