From 4c6169a604a904d343444f00efc145f84141cf5f Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 27 Jan 2025 10:45:33 -0800 Subject: [PATCH] Use PBSS and pebble by default (#1412) * Use pebble db and PBSS by default * Address CR comments * Fix failed test --- builder/files/config.toml | 3 ++- docs/cli/example_config.toml | 3 ++- docs/cli/server.md | 4 ++-- internal/cli/debug_test.go | 1 + internal/cli/server/config.go | 7 +++++-- internal/cli/server/config_test.go | 14 ++++++++++++++ internal/cli/server/testdata/default.toml | 3 ++- packaging/templates/mainnet-v1/archive/config.toml | 3 ++- .../mainnet-v1/sentry/sentry/bor/config.toml | 2 +- .../mainnet-v1/sentry/validator/bor/config.toml | 2 +- .../mainnet-v1/without-sentry/bor/config.toml | 2 +- .../templates/testnet-amoy/archive/config.toml | 3 ++- .../testnet-amoy/sentry/sentry/bor/config.toml | 2 +- .../testnet-amoy/sentry/validator/bor/config.toml | 2 +- .../testnet-amoy/without-sentry/bor/config.toml | 2 +- 15 files changed, 38 insertions(+), 15 deletions(-) diff --git a/builder/files/config.toml b/builder/files/config.toml index df34031979..e68910f123 100644 --- a/builder/files/config.toml +++ b/builder/files/config.toml @@ -8,7 +8,8 @@ chain = "mainnet" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# "db.engine" = "leveldb" +# "db.engine" = "pebble" +# "state.scheme" = "path" # keystore = "/var/lib/bor/keystore" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/docs/cli/example_config.toml b/docs/cli/example_config.toml index ea869925c4..b656a6dc3f 100644 --- a/docs/cli/example_config.toml +++ b/docs/cli/example_config.toml @@ -8,7 +8,8 @@ verbosity = 3 # Logging verbosity for the server (5=trace|4=de vmdebug = false # Record information useful for VM and contract debugging datadir = "var/lib/bor" # Path of the data directory to store information ancient = "" # Data directory for ancient chain segments (default = inside chaindata) -"db.engine" = "leveldb" # Used to select leveldb or pebble as database (default = leveldb) +"db.engine" = "pebble" # Used to select leveldb or pebble as database (default = pebble) +"state.scheme" = "path" # Used to select the state scheme (default = path) keystore = "" # Path of the directory where keystores are located "rpc.batchlimit" = 100 # Maximum number of messages in a batch (default=100, use 0 for no limits) "rpc.returndatalimit" = 100000 # Maximum size (in bytes) a result of an rpc request could have (default=100000, use 0 for no limits) diff --git a/docs/cli/server.md b/docs/cli/server.md index 243e83406d..3bfeab9d5b 100644 --- a/docs/cli/server.md +++ b/docs/cli/server.md @@ -28,7 +28,7 @@ The ```bor server``` command runs the Bor client. - ```datadir.ancient```: Data directory for ancient chain segments (default = inside chaindata) -- ```db.engine```: Backing database implementation to use ('leveldb' or 'pebble') (default: leveldb) +- ```db.engine```: Backing database implementation to use ('leveldb' or 'pebble') (default: pebble) - ```dev```: Enable developer mode with ephemeral proof-of-authority network and a pre-funded developer account, mining enabled (default: false) @@ -84,7 +84,7 @@ The ```bor server``` command runs the Bor client. - ```snapshot```: Enables the snapshot-database mode (default: true) -- ```state.scheme```: Scheme to use for storing ethereum state ('hash' or 'path') (default: hash) +- ```state.scheme```: Scheme to use for storing ethereum state ('hash' or 'path') (default: path) - ```syncmode```: Blockchain sync mode (only "full" sync supported) (default: full) diff --git a/internal/cli/debug_test.go b/internal/cli/debug_test.go index aa1e4a8bf1..1be7219c0c 100644 --- a/internal/cli/debug_test.go +++ b/internal/cli/debug_test.go @@ -28,6 +28,7 @@ func TestCommand_DebugBlock(t *testing.T) { // enable archive mode for getting traces of ancient blocks config.GcMode = "archive" + config.StateScheme = "hash" // start the mock server srv, err := server.CreateMockServer(config) diff --git a/internal/cli/server/config.go b/internal/cli/server/config.go index 5960fdeab0..93c8871bf3 100644 --- a/internal/cli/server/config.go +++ b/internal/cli/server/config.go @@ -609,7 +609,7 @@ func DefaultConfig() *Config { EnablePreimageRecording: false, DataDir: DefaultDataDir(), Ancient: "", - DBEngine: "leveldb", + DBEngine: "pebble", KeyStoreDir: "", Logging: &LoggingConfig{ Vmodule: "", @@ -647,7 +647,7 @@ func DefaultConfig() *Config { }, SyncMode: "full", GcMode: "full", - StateScheme: "hash", + StateScheme: "path", Snapshot: true, BorLogs: false, TxPool: &TxPoolConfig{ @@ -1168,6 +1168,9 @@ func (c *Config) buildEth(stack *node.Node, accountManager *accounts.Manager) (* log.Info("Enabling recording of key preimages since archive mode is used") } + if c.StateScheme == "path" { + return nil, fmt.Errorf("path storage scheme is not supported in archive mode, please use hash instead") + } default: return nil, fmt.Errorf("gcmode '%s' not found", c.GcMode) } diff --git a/internal/cli/server/config_test.go b/internal/cli/server/config_test.go index abb8ca39fb..b140789e94 100644 --- a/internal/cli/server/config_test.go +++ b/internal/cli/server/config_test.go @@ -144,3 +144,17 @@ func TestMakePasswordListFromFile(t *testing.T) { assert.Equal(t, []string{"test1", "test2"}, result) }) } + +func TestConfigStateScheme(t *testing.T) { + config := DefaultConfig() + config.StateScheme = "path" + config.GcMode = "archive" + + assert.NoError(t, config.loadChain()) + + _, err := config.buildNode() + assert.NoError(t, err) + + _, err = config.buildEth(nil, nil) + assert.Error(t, err) +} diff --git a/internal/cli/server/testdata/default.toml b/internal/cli/server/testdata/default.toml index 0df37d610c..e321b052aa 100644 --- a/internal/cli/server/testdata/default.toml +++ b/internal/cli/server/testdata/default.toml @@ -5,7 +5,8 @@ log-level = "" vmdebug = false datadir = "/var/lib/bor" ancient = "" -"db.engine" = "leveldb" +"db.engine" = "pebble" +"db.scheme" = "path" keystore = "" "rpc.batchlimit" = 100 "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/mainnet-v1/archive/config.toml b/packaging/templates/mainnet-v1/archive/config.toml index a62dda85b1..e200b47fcb 100644 --- a/packaging/templates/mainnet-v1/archive/config.toml +++ b/packaging/templates/mainnet-v1/archive/config.toml @@ -4,7 +4,8 @@ chain = "mainnet" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# "db.engine" = "leveldb" +# "db.engine" = "pebble" +state.scheme = "hash" # keystore = "" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml b/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml index 0ee56f339c..df29c21c48 100644 --- a/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml +++ b/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml @@ -4,7 +4,7 @@ chain = "mainnet" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" # keystore = "" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml b/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml index bcf19bbcbe..41c439841f 100644 --- a/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml +++ b/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml @@ -6,7 +6,7 @@ chain = "mainnet" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" # keystore = "$BOR_DIR/keystore" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/mainnet-v1/without-sentry/bor/config.toml b/packaging/templates/mainnet-v1/without-sentry/bor/config.toml index 24d25b4406..77bfe63f3c 100644 --- a/packaging/templates/mainnet-v1/without-sentry/bor/config.toml +++ b/packaging/templates/mainnet-v1/without-sentry/bor/config.toml @@ -6,7 +6,7 @@ chain = "mainnet" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" # keystore = "$BOR_DIR/keystore" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/testnet-amoy/archive/config.toml b/packaging/templates/testnet-amoy/archive/config.toml index d7f19551e5..7fb2f21476 100644 --- a/packaging/templates/testnet-amoy/archive/config.toml +++ b/packaging/templates/testnet-amoy/archive/config.toml @@ -4,7 +4,8 @@ chain = "amoy" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" +state.scheme = "hash" # keystore = "" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/testnet-amoy/sentry/sentry/bor/config.toml b/packaging/templates/testnet-amoy/sentry/sentry/bor/config.toml index e0d976ed57..0007e22955 100644 --- a/packaging/templates/testnet-amoy/sentry/sentry/bor/config.toml +++ b/packaging/templates/testnet-amoy/sentry/sentry/bor/config.toml @@ -4,7 +4,7 @@ chain = "amoy" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" # keystore = "" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/testnet-amoy/sentry/validator/bor/config.toml b/packaging/templates/testnet-amoy/sentry/validator/bor/config.toml index 7180b4e422..9e0eec562a 100644 --- a/packaging/templates/testnet-amoy/sentry/validator/bor/config.toml +++ b/packaging/templates/testnet-amoy/sentry/validator/bor/config.toml @@ -6,7 +6,7 @@ chain = "amoy" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" # keystore = "$BOR_DIR/keystore" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000 diff --git a/packaging/templates/testnet-amoy/without-sentry/bor/config.toml b/packaging/templates/testnet-amoy/without-sentry/bor/config.toml index 91bd871c94..fa9f1970e8 100644 --- a/packaging/templates/testnet-amoy/without-sentry/bor/config.toml +++ b/packaging/templates/testnet-amoy/without-sentry/bor/config.toml @@ -6,7 +6,7 @@ chain = "amoy" # vmdebug = false datadir = "/var/lib/bor/data" # ancient = "" -# db.engine = "leveldb" +# db.engine = "pebble" # keystore = "$BOR_DIR/keystore" # "rpc.batchlimit" = 100 # "rpc.returndatalimit" = 100000