diff --git a/core-rust-bridge/src/main/java/com/radixdlt/environment/DatabaseFlags.java b/core-rust-bridge/src/main/java/com/radixdlt/environment/DatabaseConfig.java similarity index 96% rename from core-rust-bridge/src/main/java/com/radixdlt/environment/DatabaseFlags.java rename to core-rust-bridge/src/main/java/com/radixdlt/environment/DatabaseConfig.java index 79f1dcb9c2..f2b1771133 100644 --- a/core-rust-bridge/src/main/java/com/radixdlt/environment/DatabaseFlags.java +++ b/core-rust-bridge/src/main/java/com/radixdlt/environment/DatabaseConfig.java @@ -68,11 +68,11 @@ import com.radixdlt.sbor.codec.StructCodec; /** Database configuration options */ -public record DatabaseFlags( +public record DatabaseConfig( boolean enableLocalTransactionExecutionIndex, boolean enableAccountChangeIndex) { public static void registerCodec(CodecMap codecMap) { codecMap.register( - DatabaseFlags.class, - codecs -> StructCodec.fromRecordComponents(DatabaseFlags.class, codecs)); + DatabaseConfig.class, + codecs -> StructCodec.fromRecordComponents(DatabaseConfig.class, codecs)); } } diff --git a/core-rust-bridge/src/main/java/com/radixdlt/environment/StateManagerConfig.java b/core-rust-bridge/src/main/java/com/radixdlt/environment/StateManagerConfig.java index 3dcc5b118d..e65222d164 100644 --- a/core-rust-bridge/src/main/java/com/radixdlt/environment/StateManagerConfig.java +++ b/core-rust-bridge/src/main/java/com/radixdlt/environment/StateManagerConfig.java @@ -77,7 +77,7 @@ public record StateManagerConfig( Option mempoolConfigOpt, Option vertexLimitsConfigOpt, DatabaseBackendConfig databaseBackendConfig, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, LoggingConfig loggingConfig, StateHashTreeGcConfig stateHashTreeGcConfig, LedgerProofsGcConfig ledgerProofsGcConfig, diff --git a/core-rust-bridge/src/main/java/com/radixdlt/sbor/NodeSborCodecs.java b/core-rust-bridge/src/main/java/com/radixdlt/sbor/NodeSborCodecs.java index b7b7e1b4d9..2a477966e2 100644 --- a/core-rust-bridge/src/main/java/com/radixdlt/sbor/NodeSborCodecs.java +++ b/core-rust-bridge/src/main/java/com/radixdlt/sbor/NodeSborCodecs.java @@ -181,7 +181,7 @@ public static void registerCodecsWithCodecMap(CodecMap codecMap) { LeaderRoundCounter.registerCodec(codecMap); InvalidCommitRequestError.registerCodec(codecMap); DatabaseBackendConfig.registerCodec(codecMap); - DatabaseFlags.registerCodec(codecMap); + DatabaseConfig.registerCodec(codecMap); TransactionHeader.registerCodec(codecMap); CoreApiServerConfig.registerCodec(codecMap); CoreApiServerFlags.registerCodec(codecMap); diff --git a/core-rust/state-manager/src/state_manager.rs b/core-rust/state-manager/src/state_manager.rs index b593127294..db5f7949c3 100644 --- a/core-rust/state-manager/src/state_manager.rs +++ b/core-rust/state-manager/src/state_manager.rs @@ -79,7 +79,9 @@ use crate::{ mempool_manager::MempoolManager, mempool_relay_dispatcher::MempoolRelayDispatcher, priority_mempool::PriorityMempool, - store::{jmt_gc::StateHashTreeGc, DatabaseBackendConfig, DatabaseFlags, RawDbMetricsCollector}, + store::{ + jmt_gc::StateHashTreeGc, DatabaseBackendConfig, DatabaseConfig, RawDbMetricsCollector, + }, transaction::{CachedCommittabilityValidator, CommittabilityValidator, TransactionPreviewer}, ActualStateManagerDatabase, PendingTransactionResultCache, ProtocolUpdateResult, StateComputer, StateManagerDatabase, @@ -104,7 +106,7 @@ pub struct StateManagerConfig { pub mempool_config: Option, pub vertex_limits_config: Option, pub database_backend_config: DatabaseBackendConfig, - pub database_flags: DatabaseFlags, + pub database_config: DatabaseConfig, pub logging_config: LoggingConfig, pub state_hash_tree_gc_config: StateHashTreeGcConfig, pub ledger_proofs_gc_config: LedgerProofsGcConfig, @@ -127,7 +129,7 @@ impl StateManagerConfig { database_backend_config: DatabaseBackendConfig { rocks_db_path: rocks_db_path.into(), }, - database_flags: DatabaseFlags::default(), + database_config: DatabaseConfig::default(), logging_config: LoggingConfig::default(), state_hash_tree_gc_config: StateHashTreeGcConfig::default(), ledger_proofs_gc_config: LedgerProofsGcConfig::default(), @@ -165,7 +167,7 @@ impl StateManager { let network = config.network_definition.clone(); let db_path = PathBuf::from(config.database_backend_config.rocks_db_path.clone()); - let raw_db = match StateManagerDatabase::new(db_path, config.database_flags.clone(), &network) { + let raw_db = match StateManagerDatabase::new(db_path, config.database_config.clone(), &network) { Ok(db) => db, Err(error) => { match error { diff --git a/core-rust/state-manager/src/store/mod.rs b/core-rust/state-manager/src/store/mod.rs index e5b684d045..35bd38075c 100644 --- a/core-rust/state-manager/src/store/mod.rs +++ b/core-rust/state-manager/src/store/mod.rs @@ -78,7 +78,7 @@ pub use rocks_db::{ActualStateManagerDatabase, StateManagerDatabase}; pub use rocks_db::{ReadableRocks, WriteableRocks}; use sbor::{Categorize, Decode, Encode}; use std::sync::Arc; -pub use traits::DatabaseFlags; +pub use traits::DatabaseConfig; #[derive(Debug, Categorize, Encode, Decode, Clone)] pub struct DatabaseBackendConfig { diff --git a/core-rust/state-manager/src/store/rocks_db.rs b/core-rust/state-manager/src/store/rocks_db.rs index 76a3f14b69..aca057b9cb 100644 --- a/core-rust/state-manager/src/store/rocks_db.rs +++ b/core-rust/state-manager/src/store/rocks_db.rs @@ -682,11 +682,11 @@ impl<'db> Snapshottable<'db> for StateManagerDatabase { /// A RocksDB-backed persistence layer for state manager. pub struct StateManagerDatabase { - /// Database feature flags. + /// Database config. /// - /// These were passed during construction, validated and persisted. They are made available by - /// this field as a cache. - config: DatabaseFlags, + /// The config is passed during construction, validated, persisted, and effectively immutable + /// during the state manager's lifetime. This field only acts as a cache. + config: DatabaseConfig, /// Underlying RocksDB instance. rocks: R, @@ -695,7 +695,7 @@ pub struct StateManagerDatabase { impl ActualStateManagerDatabase { pub fn new( root: PathBuf, - config: DatabaseFlags, + config: DatabaseConfig, network: &NetworkDefinition, ) -> Result { let mut db_opts = Options::default(); @@ -710,18 +710,13 @@ impl ActualStateManagerDatabase { let db = DB::open_cf_descriptors(&db_opts, root.as_path(), column_families).unwrap(); let state_manager_database = StateManagerDatabase { - config: config.clone(), + config, rocks: DirectRocks { db }, }; - let current_database_config = state_manager_database.read_flags_state(); - config.validate(¤t_database_config)?; - state_manager_database.write_flags(&config); - - if state_manager_database.config.enable_account_change_index { - state_manager_database.catchup_account_change_index(); - } + state_manager_database.validate_and_persist_new_config()?; + state_manager_database.catchup_account_change_index(); state_manager_database.restore_december_2023_lost_substates(network); Ok(state_manager_database) @@ -754,7 +749,7 @@ impl StateManagerDatabase { .unwrap(); StateManagerDatabase { - config: DatabaseFlags { + config: DatabaseConfig { enable_local_transaction_execution_index: false, enable_account_change_index: false, }, @@ -789,7 +784,7 @@ impl StateManagerDatabase { .unwrap(); StateManagerDatabase { - config: DatabaseFlags { + config: DatabaseConfig { enable_local_transaction_execution_index: false, enable_account_change_index: false, }, @@ -817,7 +812,14 @@ impl StateManagerDatabase { } impl StateManagerDatabase { - fn read_flags_state(&self) -> DatabaseFlagsState { + fn validate_and_persist_new_config(&self) -> Result<(), DatabaseConfigValidationError> { + let stored_config_state = self.read_config_state(); + self.config.validate(&stored_config_state)?; + self.write_config(); + Ok(()) + } + + fn read_config_state(&self) -> DatabaseConfigState { let db_context = self.open_read_context(); let extension_data_cf = db_context.cf(ExtensionsDataCf); let account_change_index_enabled = extension_data_cf @@ -826,22 +828,22 @@ impl StateManagerDatabase { let local_transaction_execution_index_enabled = extension_data_cf .get(&ExtensionsDataKey::LocalTransactionExecutionIndexEnabled) .map(|bytes| scrypto_decode::(&bytes).unwrap()); - DatabaseFlagsState { + DatabaseConfigState { account_change_index_enabled, local_transaction_execution_index_enabled, } } - fn write_flags(&self, database_config: &DatabaseFlags) { + fn write_config(&self) { let db_context = self.open_rw_context(); let extension_data_cf = db_context.cf(ExtensionsDataCf); extension_data_cf.put( &ExtensionsDataKey::AccountChangeIndexEnabled, - &scrypto_encode(&database_config.enable_account_change_index).unwrap(), + &scrypto_encode(&self.config.enable_account_change_index).unwrap(), ); extension_data_cf.put( &ExtensionsDataKey::LocalTransactionExecutionIndexEnabled, - &scrypto_encode(&database_config.enable_local_transaction_execution_index).unwrap(), + &scrypto_encode(&self.config.enable_local_transaction_execution_index).unwrap(), ); } } @@ -1788,6 +1790,10 @@ impl AccountChangeIndexExtension for StateManagerDatabase } fn catchup_account_change_index(&self) { + if !self.config.enable_account_change_index { + return; // Nothing to do + } + const MAX_TRANSACTION_BATCH: u64 = 16 * 1024; info!("Account Change Index is enabled!"); diff --git a/core-rust/state-manager/src/store/traits.rs b/core-rust/state-manager/src/store/traits.rs index 6d79b04e0f..c02afa830e 100644 --- a/core-rust/state-manager/src/store/traits.rs +++ b/core-rust/state-manager/src/store/traits.rs @@ -82,17 +82,16 @@ pub enum DatabaseConfigValidationError { LocalTransactionExecutionIndexChanged, } -/// Database flags required for initialization built from -/// config file and environment variables. +/// Database flags required for initialization built from config file and environment variables. #[derive(Debug, Categorize, Encode, Decode, Clone)] -pub struct DatabaseFlags { +pub struct DatabaseConfig { pub enable_local_transaction_execution_index: bool, pub enable_account_change_index: bool, } -impl Default for DatabaseFlags { +impl Default for DatabaseConfig { fn default() -> Self { - DatabaseFlags { + DatabaseConfig { enable_local_transaction_execution_index: true, enable_account_change_index: true, } @@ -104,15 +103,15 @@ impl Default for DatabaseFlags { /// just being initialized (when all of the fields are None) but also /// when new configurations are added - this is a cheap work around to /// limit future needed ledger wipes until we have a better solution. -pub struct DatabaseFlagsState { +pub struct DatabaseConfigState { pub local_transaction_execution_index_enabled: Option, pub account_change_index_enabled: Option, } -impl DatabaseFlags { +impl DatabaseConfig { pub fn validate( &self, - current_database_config: &DatabaseFlagsState, + current_database_config: &DatabaseConfigState, ) -> Result<(), DatabaseConfigValidationError> { if !self.enable_local_transaction_execution_index && self.enable_account_change_index { return Err(DatabaseConfigValidationError::AccountChangeIndexRequiresLocalTransactionExecutionIndex); diff --git a/core/src/integration/java/com/radixdlt/integration/steady_state/deterministic/rev2/consensus_ledger_sync/MultiNodeRebootTest.java b/core/src/integration/java/com/radixdlt/integration/steady_state/deterministic/rev2/consensus_ledger_sync/MultiNodeRebootTest.java index 702c933286..d1090ed9f8 100644 --- a/core/src/integration/java/com/radixdlt/integration/steady_state/deterministic/rev2/consensus_ledger_sync/MultiNodeRebootTest.java +++ b/core/src/integration/java/com/radixdlt/integration/steady_state/deterministic/rev2/consensus_ledger_sync/MultiNodeRebootTest.java @@ -69,7 +69,7 @@ import static org.assertj.core.api.Assertions.*; import com.google.inject.Module; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.genesis.GenesisBuilder; import com.radixdlt.genesis.GenesisConsensusManagerConfig; import com.radixdlt.harness.deterministic.DeterministicTest; @@ -220,7 +220,7 @@ private DeterministicTest createTest( GenesisConsensusManagerConfig.Builder.testWithRoundsPerEpoch( this.roundsPerEpoch) .totalEmissionXrdPerEpoch(Decimal.ofNonNegative(0))), - new DatabaseFlags(true, false), + new DatabaseConfig(true, false), StateComputerConfig.REV2ProposerConfig.transactionGenerator( new REV2TransactionGenerator(), 1), false, diff --git a/core/src/main/java/com/radixdlt/RadixNodeModule.java b/core/src/main/java/com/radixdlt/RadixNodeModule.java index 5191971c32..3886be8892 100644 --- a/core/src/main/java/com/radixdlt/RadixNodeModule.java +++ b/core/src/main/java/com/radixdlt/RadixNodeModule.java @@ -277,8 +277,8 @@ protected void configure() { var enableLocalTransactionExecutionIndex = properties.get("db.local_transaction_execution_index.enable", true); var enableAccountChangeIndex = properties.get("db.account_change_index.enable", true); - var databaseFlags = - new DatabaseFlags(enableLocalTransactionExecutionIndex, enableAccountChangeIndex); + var databaseConfig = + new DatabaseConfig(enableLocalTransactionExecutionIndex, enableAccountChangeIndex); install(new REv2LedgerInitializerModule(genesisProvider)); @@ -371,7 +371,7 @@ protected void configure() { REv2StateManagerModule.create( ProposalLimitsConfig.from(vertexLimitsConfig), vertexLimitsConfig, - databaseFlags, + databaseConfig, Option.some(mempoolConfig), stateHashTreeGcConfig, ledgerProofsGcConfig, diff --git a/core/src/main/java/com/radixdlt/rev2/modules/REv2StateManagerModule.java b/core/src/main/java/com/radixdlt/rev2/modules/REv2StateManagerModule.java index f96bb36986..6c94d71790 100644 --- a/core/src/main/java/com/radixdlt/rev2/modules/REv2StateManagerModule.java +++ b/core/src/main/java/com/radixdlt/rev2/modules/REv2StateManagerModule.java @@ -106,7 +106,7 @@ public final class REv2StateManagerModule extends AbstractModule { private final ProposalLimitsConfig proposalLimitsConfig; private final Option vertexLimitsConfigOpt; - private final DatabaseFlags databaseFlags; + private final DatabaseConfig databaseConfig; private final Option mempoolConfig; private final boolean debugLogging; private final StateHashTreeGcConfig stateHashTreeGcConfig; @@ -118,7 +118,7 @@ public final class REv2StateManagerModule extends AbstractModule { private REv2StateManagerModule( ProposalLimitsConfig proposalLimitsConfig, Option vertexLimitsConfigOpt, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, Option mempoolConfig, boolean debugLogging, StateHashTreeGcConfig stateHashTreeGcConfig, @@ -128,7 +128,7 @@ private REv2StateManagerModule( boolean noFees) { this.proposalLimitsConfig = proposalLimitsConfig; this.vertexLimitsConfigOpt = vertexLimitsConfigOpt; - this.databaseFlags = databaseFlags; + this.databaseConfig = databaseConfig; this.mempoolConfig = mempoolConfig; this.debugLogging = debugLogging; this.stateHashTreeGcConfig = stateHashTreeGcConfig; @@ -141,7 +141,7 @@ private REv2StateManagerModule( public static REv2StateManagerModule create( ProposalLimitsConfig proposalLimitsConfig, VertexLimitsConfig vertexLimitsConfig, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, Option mempoolConfig, StateHashTreeGcConfig stateHashTreeGcConfig, LedgerProofsGcConfig ledgerProofsGcConfig, @@ -150,7 +150,7 @@ public static REv2StateManagerModule create( return new REv2StateManagerModule( proposalLimitsConfig, Option.some(vertexLimitsConfig), - databaseFlags, + databaseConfig, mempoolConfig, false, stateHashTreeGcConfig, @@ -162,7 +162,7 @@ public static REv2StateManagerModule create( public static REv2StateManagerModule createForTesting( ProposalLimitsConfig proposalLimitsConfig, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, Option mempoolConfig, boolean debugLogging, StateHashTreeGcConfig stateHashTreeGcConfig, @@ -173,7 +173,7 @@ public static REv2StateManagerModule createForTesting( return new REv2StateManagerModule( proposalLimitsConfig, Option.none(), - databaseFlags, + databaseConfig, mempoolConfig, debugLogging, stateHashTreeGcConfig, @@ -188,7 +188,7 @@ public void configure() { bind(StateComputerLedger.StateComputer.class).to(REv2StateComputer.class); bind(REv2TransactionsAndProofReader.class).in(Scopes.SINGLETON); bind(TransactionsAndProofReader.class).to(REv2TransactionsAndProofReader.class); - bind(DatabaseFlags.class).toInstance(databaseFlags); + bind(DatabaseConfig.class).toInstance(databaseConfig); bind(LedgerSyncLimitsConfig.class).toInstance(ledgerSyncLimitsConfig); bind(ProtocolConfig.class).toInstance(protocolConfig); install(proposalLimitsConfig.asModule()); @@ -210,7 +210,7 @@ private NodeRustEnvironment stateManager( FatalPanicHandler fatalPanicHandler, Network network, DatabaseBackendConfig databaseBackendConfig, - DatabaseFlags databaseFlags) { + DatabaseConfig databaseConfig) { return new NodeRustEnvironment( mempoolRelayDispatcher, fatalPanicHandler, @@ -219,7 +219,7 @@ private NodeRustEnvironment stateManager( mempoolConfig, vertexLimitsConfigOpt, databaseBackendConfig, - databaseFlags, + databaseConfig, getLoggingConfig(), stateHashTreeGcConfig, ledgerProofsGcConfig, diff --git a/core/src/test-core/java/com/radixdlt/modules/FunctionalRadixNodeModule.java b/core/src/test-core/java/com/radixdlt/modules/FunctionalRadixNodeModule.java index 61501e08c7..2ef46b6397 100644 --- a/core/src/test-core/java/com/radixdlt/modules/FunctionalRadixNodeModule.java +++ b/core/src/test-core/java/com/radixdlt/modules/FunctionalRadixNodeModule.java @@ -418,7 +418,7 @@ public void configure() { install( REv2StateManagerModule.createForTesting( ProposalLimitsConfig.testDefaults(), - rev2Config.databaseFlags(), + rev2Config.databaseConfig(), Option.none(), rev2Config.debugLogging(), rev2Config.stateHashTreeGcConfig(), @@ -435,7 +435,7 @@ public void configure() { install( REv2StateManagerModule.createForTesting( mempool.proposalLimitsConfig(), - rev2Config.databaseFlags(), + rev2Config.databaseConfig(), Option.some(mempool.mempoolConfig()), rev2Config.debugLogging(), rev2Config.stateHashTreeGcConfig(), diff --git a/core/src/test-core/java/com/radixdlt/modules/StateComputerConfig.java b/core/src/test-core/java/com/radixdlt/modules/StateComputerConfig.java index 51e54e5bae..ebe5906069 100644 --- a/core/src/test-core/java/com/radixdlt/modules/StateComputerConfig.java +++ b/core/src/test-core/java/com/radixdlt/modules/StateComputerConfig.java @@ -73,7 +73,7 @@ import com.radixdlt.consensus.liveness.ProposerElection; import com.radixdlt.consensus.liveness.ProposerElections; import com.radixdlt.consensus.liveness.WeightedRotatingLeaders; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.environment.LedgerProofsGcConfig; import com.radixdlt.environment.StateHashTreeGcConfig; import com.radixdlt.genesis.GenesisData; @@ -142,7 +142,7 @@ static StateComputerConfig mockedNoEpochs( static StateComputerConfig rev2( int networkId, GenesisData genesis, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, REV2ProposerConfig proposerConfig, boolean debugLogging, boolean noFees, @@ -150,7 +150,7 @@ static StateComputerConfig rev2( return new REv2StateComputerConfig( networkId, genesis, - databaseFlags, + databaseConfig, proposerConfig, debugLogging, StateHashTreeGcConfig.forTesting(), @@ -163,12 +163,12 @@ static StateComputerConfig rev2( static StateComputerConfig rev2( int networkId, GenesisData genesis, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, REV2ProposerConfig proposerConfig) { return new REv2StateComputerConfig( networkId, genesis, - databaseFlags, + databaseConfig, proposerConfig, false, StateHashTreeGcConfig.forTesting(), @@ -191,7 +191,7 @@ static StateComputerConfig rev2( return new REv2StateComputerConfig( networkId, genesis, - new DatabaseFlags(true, false), + new DatabaseConfig(true, false), proposerConfig, false, StateHashTreeGcConfig.forTesting(), @@ -263,7 +263,7 @@ public MockedMempoolConfig mempoolConfig() { record REv2StateComputerConfig( int networkId, GenesisData genesis, - DatabaseFlags databaseFlags, + DatabaseConfig databaseConfig, REV2ProposerConfig proposerConfig, boolean debugLogging, StateHashTreeGcConfig stateHashTreeGcConfig, diff --git a/core/src/test/java/com/radixdlt/api/DeterministicCoreApiTestBase.java b/core/src/test/java/com/radixdlt/api/DeterministicCoreApiTestBase.java index d26a1c30d0..14fdfae290 100644 --- a/core/src/test/java/com/radixdlt/api/DeterministicCoreApiTestBase.java +++ b/core/src/test/java/com/radixdlt/api/DeterministicCoreApiTestBase.java @@ -79,7 +79,7 @@ import com.radixdlt.api.core.generated.models.*; import com.radixdlt.crypto.ECKeyPair; import com.radixdlt.environment.CoreApiServerFlags; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.environment.StartProcessorOnRunner; import com.radixdlt.genesis.GenesisBuilder; import com.radixdlt.genesis.GenesisConsensusManagerConfig; @@ -123,7 +123,7 @@ protected DeterministicCoreApiTestBase() {} protected DeterministicTest buildRunningServerTest() { return buildRunningServerTest( 1000000, - new DatabaseFlags(true, false), + new DatabaseConfig(true, false), GenesisData.NO_SCENARIOS, ProtocolConfig.testingDefault()); } @@ -131,30 +131,30 @@ protected DeterministicTest buildRunningServerTest() { protected DeterministicTest buildRunningServerTestWithProtocolConfig( int roundsPerEpoch, ProtocolConfig protocolConfig) { return buildRunningServerTest( - roundsPerEpoch, new DatabaseFlags(true, false), GenesisData.NO_SCENARIOS, protocolConfig); + roundsPerEpoch, new DatabaseConfig(true, false), GenesisData.NO_SCENARIOS, protocolConfig); } protected DeterministicTest buildRunningServerTestWithScenarios(ImmutableList scenarios) { return buildRunningServerTest( - 1000000, new DatabaseFlags(true, false), scenarios, ProtocolConfig.testingDefault()); + 1000000, new DatabaseConfig(true, false), scenarios, ProtocolConfig.testingDefault()); } - protected DeterministicTest buildRunningServerTest(DatabaseFlags databaseFlags) { + protected DeterministicTest buildRunningServerTest(DatabaseConfig databaseConfig) { return buildRunningServerTest( - 1000000, databaseFlags, GenesisData.NO_SCENARIOS, ProtocolConfig.testingDefault()); + 1000000, databaseConfig, GenesisData.NO_SCENARIOS, ProtocolConfig.testingDefault()); } protected DeterministicTest buildRunningServerTest(int roundsPerEpoch) { return buildRunningServerTest( roundsPerEpoch, - new DatabaseFlags(true, false), + new DatabaseConfig(true, false), GenesisData.NO_SCENARIOS, ProtocolConfig.testingDefault()); } protected DeterministicTest buildRunningServerTest( int roundsPerEpoch, - DatabaseFlags databaseConfig, + DatabaseConfig databaseConfig, ImmutableList scenariosToRun, ProtocolConfig protocolConfig) { var test = diff --git a/core/src/test/java/com/radixdlt/api/SystemApiTestBase.java b/core/src/test/java/com/radixdlt/api/SystemApiTestBase.java index d0edfbacc6..658cbc4332 100644 --- a/core/src/test/java/com/radixdlt/api/SystemApiTestBase.java +++ b/core/src/test/java/com/radixdlt/api/SystemApiTestBase.java @@ -76,7 +76,7 @@ import com.radixdlt.api.system.health.HealthInfoServiceImpl; import com.radixdlt.consensus.bft.Self; import com.radixdlt.crypto.ECKeyPair; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.environment.deterministic.SingleNodeDeterministicRunner; import com.radixdlt.genesis.GenesisBuilder; import com.radixdlt.genesis.GenesisConsensusManagerConfig; @@ -136,7 +136,7 @@ public void setup() { TEST_KEY.getPublicKey(), Decimal.ONE, GenesisConsensusManagerConfig.Builder.testDefaults()), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), StateComputerConfig.REV2ProposerConfig.Mempool.defaults()), new SyncRelayConfig(500, 10, 3000, 10, Long.MAX_VALUE)))), new TestP2PModule.Builder().build(), diff --git a/core/src/test/java/com/radixdlt/api/core/LtsAccountDepositBehaviourTest.java b/core/src/test/java/com/radixdlt/api/core/LtsAccountDepositBehaviourTest.java index 1f21161b36..c2d2110e90 100644 --- a/core/src/test/java/com/radixdlt/api/core/LtsAccountDepositBehaviourTest.java +++ b/core/src/test/java/com/radixdlt/api/core/LtsAccountDepositBehaviourTest.java @@ -69,7 +69,7 @@ import com.radixdlt.api.DeterministicCoreApiTestBase; import com.radixdlt.api.core.generated.models.*; import com.radixdlt.crypto.ECKeyPair; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.harness.deterministic.TransactionExecutor; import com.radixdlt.identifiers.Address; import com.radixdlt.rev2.Manifest; @@ -83,7 +83,7 @@ public final class LtsAccountDepositBehaviourTest extends DeterministicCoreApiTe @Test public void account_with_default_config_allows_all_deposits() throws Exception { - try (final var test = buildRunningServerTest(new DatabaseFlags(true, true))) { + try (final var test = buildRunningServerTest(new DatabaseConfig(true, true))) { test.suppressUnusedWarning(); // Arrange: pretty empty state @@ -156,7 +156,7 @@ public void account_with_default_config_allows_all_deposits() throws Exception { @Test public void account_with_reject_default_rule_disallows_all_deposits() throws Exception { - try (final var test = buildRunningServerTest(new DatabaseFlags(true, true))) { + try (final var test = buildRunningServerTest(new DatabaseConfig(true, true))) { test.suppressUnusedWarning(); // Arrange: create account and set its default deposit rule to `Reject` @@ -210,7 +210,7 @@ public void account_with_reject_default_rule_disallows_all_deposits() throws Exc @Test public void configured_resource_preference_and_depositor_badge_is_returned() throws Exception { - try (final var test = buildRunningServerTest(new DatabaseFlags(true, true))) { + try (final var test = buildRunningServerTest(new DatabaseConfig(true, true))) { test.suppressUnusedWarning(); // Arrange: create account with some resource preference and some authorized depositor badge diff --git a/core/src/test/java/com/radixdlt/api/core/LtsAccountResourceBalanceTest.java b/core/src/test/java/com/radixdlt/api/core/LtsAccountResourceBalanceTest.java index 1bf4f35bba..26ca53a269 100644 --- a/core/src/test/java/com/radixdlt/api/core/LtsAccountResourceBalanceTest.java +++ b/core/src/test/java/com/radixdlt/api/core/LtsAccountResourceBalanceTest.java @@ -69,7 +69,7 @@ import com.radixdlt.api.DeterministicCoreApiTestBase; import com.radixdlt.api.core.generated.models.*; import com.radixdlt.crypto.ECKeyPair; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.identifiers.Address; import com.radixdlt.rev2.Manifest; import com.radixdlt.rev2.ScryptoConstants; @@ -79,7 +79,7 @@ public final class LtsAccountResourceBalanceTest extends DeterministicCoreApiTestBase { @Test public void test_lts_account_xrd_balance() throws Exception { - try (var test = buildRunningServerTest(new DatabaseFlags(true, true))) { + try (var test = buildRunningServerTest(new DatabaseConfig(true, true))) { test.suppressUnusedWarning(); var accountKeyPair = ECKeyPair.generateNew(); diff --git a/core/src/test/java/com/radixdlt/api/core/LtsTransactionOutcomesTest.java b/core/src/test/java/com/radixdlt/api/core/LtsTransactionOutcomesTest.java index f0dc64b257..0ed4d17ae8 100644 --- a/core/src/test/java/com/radixdlt/api/core/LtsTransactionOutcomesTest.java +++ b/core/src/test/java/com/radixdlt/api/core/LtsTransactionOutcomesTest.java @@ -69,7 +69,7 @@ import com.radixdlt.api.DeterministicCoreApiTestBase; import com.radixdlt.api.core.generated.models.*; import com.radixdlt.crypto.ECKeyPair; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.genesis.GenesisData; import com.radixdlt.identifiers.Address; import com.radixdlt.lang.Option; @@ -83,7 +83,7 @@ public class LtsTransactionOutcomesTest extends DeterministicCoreApiTestBase { @Test public void test_non_fungible_entity_changes() throws Exception { - try (var test = buildRunningServerTest(new DatabaseFlags(true, true))) { + try (var test = buildRunningServerTest(new DatabaseConfig(true, true))) { test.suppressUnusedWarning(); var accountKeyPair = ECKeyPair.generateNew(); @@ -248,7 +248,7 @@ private LtsCommittedTransactionOutcome getSingleCommittedTransactionOutcome( @Test public void test_multiple_transactions_have_correct_outcomes() throws Exception { - try (var test = buildRunningServerTest(new DatabaseFlags(true, true))) { + try (var test = buildRunningServerTest(new DatabaseConfig(true, true))) { test.suppressUnusedWarning(); var faucetAddressStr = ScryptoConstants.FAUCET_ADDRESS.encode(networkDefinition); diff --git a/core/src/test/java/com/radixdlt/rev2/LedgerProofsGcTest.java b/core/src/test/java/com/radixdlt/rev2/LedgerProofsGcTest.java index 43fe4778af..cba896b97d 100644 --- a/core/src/test/java/com/radixdlt/rev2/LedgerProofsGcTest.java +++ b/core/src/test/java/com/radixdlt/rev2/LedgerProofsGcTest.java @@ -67,7 +67,7 @@ import static com.radixdlt.environment.deterministic.network.MessageSelector.firstSelector; import static org.assertj.core.api.Assertions.assertThat; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.environment.LedgerProofsGcConfig; import com.radixdlt.environment.StateHashTreeGcConfig; import com.radixdlt.environment.deterministic.network.MessageMutator; @@ -138,7 +138,7 @@ private DeterministicTest createTest( Decimal.ONE, GenesisConsensusManagerConfig.Builder.testWithRoundsPerEpoch( roundsPerEpoch)), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), REV2ProposerConfig.transactionGenerator( new SizedTransactionGenerator(NetworkDefinition.INT_TEST_NET, txnSize), 1), diff --git a/core/src/test/java/com/radixdlt/rev2/REv2StateComputerTest.java b/core/src/test/java/com/radixdlt/rev2/REv2StateComputerTest.java index 7adb4fd40a..60e5ff41ad 100644 --- a/core/src/test/java/com/radixdlt/rev2/REv2StateComputerTest.java +++ b/core/src/test/java/com/radixdlt/rev2/REv2StateComputerTest.java @@ -122,7 +122,7 @@ private Injector createInjector() { new CryptoModule(), REv2StateManagerModule.createForTesting( ProposalLimitsConfig.testDefaults(), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), Option.none(), false, StateHashTreeGcConfig.forTesting(), diff --git a/core/src/test/java/com/radixdlt/rev2/RustMempoolTest.java b/core/src/test/java/com/radixdlt/rev2/RustMempoolTest.java index 362f56c205..6a72c0e760 100644 --- a/core/src/test/java/com/radixdlt/rev2/RustMempoolTest.java +++ b/core/src/test/java/com/radixdlt/rev2/RustMempoolTest.java @@ -128,7 +128,7 @@ public void test_rust_mempool_add() throws Exception { new RustMempoolConfig(mempoolMaxTotalTransactionsSize, mempoolMaxTransactionCount)), Option.none(), new DatabaseBackendConfig(folder.newFolder().getPath()), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), LoggingConfig.getDefault(), StateHashTreeGcConfig.forTesting(), LedgerProofsGcConfig.forTesting(), @@ -186,7 +186,7 @@ public void test_rust_mempool_getTxns() throws Exception { new RustMempoolConfig(mempoolMaxTotalTransactionsSize, mempoolMaxTransactionCount)), Option.none(), new DatabaseBackendConfig(folder.newFolder().getPath()), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), LoggingConfig.getDefault(), StateHashTreeGcConfig.forTesting(), LedgerProofsGcConfig.forTesting(), @@ -327,7 +327,7 @@ public void test_rust_mempool_getRelayTxns() throws Exception { new RustMempoolConfig(mempoolMaxTotalTransactionsSize, mempoolMaxTransactionCount)), Option.none(), new DatabaseBackendConfig(folder.newFolder().getPath()), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), LoggingConfig.getDefault(), StateHashTreeGcConfig.forTesting(), LedgerProofsGcConfig.forTesting(), diff --git a/core/src/test/java/com/radixdlt/rev2/StateHashTreeGcTest.java b/core/src/test/java/com/radixdlt/rev2/StateHashTreeGcTest.java index af38364dc1..cc192b60a6 100644 --- a/core/src/test/java/com/radixdlt/rev2/StateHashTreeGcTest.java +++ b/core/src/test/java/com/radixdlt/rev2/StateHashTreeGcTest.java @@ -67,7 +67,7 @@ import static com.radixdlt.environment.deterministic.network.MessageSelector.firstSelector; import com.google.inject.Injector; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.environment.LedgerProofsGcConfig; import com.radixdlt.environment.StateHashTreeGcConfig; import com.radixdlt.environment.deterministic.network.MessageMutator; @@ -118,7 +118,7 @@ private DeterministicTest createTest(long stateVersionHistoryLength) { 1, Decimal.ONE, GenesisConsensusManagerConfig.Builder.testWithRoundsPerEpoch(100)), - new DatabaseFlags(false, false), + new DatabaseConfig(false, false), REV2ProposerConfig.noUserTransactions(), false, new StateHashTreeGcConfig( diff --git a/core/src/test/java/com/radixdlt/rev2/protocol/ProtocolUpdateWithEpochBoundsTest.java b/core/src/test/java/com/radixdlt/rev2/protocol/ProtocolUpdateWithEpochBoundsTest.java index c98401ef46..3482332401 100644 --- a/core/src/test/java/com/radixdlt/rev2/protocol/ProtocolUpdateWithEpochBoundsTest.java +++ b/core/src/test/java/com/radixdlt/rev2/protocol/ProtocolUpdateWithEpochBoundsTest.java @@ -72,7 +72,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.radixdlt.environment.DatabaseFlags; +import com.radixdlt.environment.DatabaseConfig; import com.radixdlt.genesis.GenesisBuilder; import com.radixdlt.genesis.GenesisConsensusManagerConfig; import com.radixdlt.harness.deterministic.DeterministicTest; @@ -303,7 +303,7 @@ private DeterministicTest createTest(ProtocolConfig protocolConfig) { STAKE_PER_VALIDATOR, GenesisConsensusManagerConfig.Builder.testWithRoundsPerEpoch(30) .totalEmissionXrdPerEpoch(Decimal.ZERO)), - new DatabaseFlags(true, false), + new DatabaseConfig(true, false), StateComputerConfig.REV2ProposerConfig.Mempool.defaults(), false, true,