Skip to content

Commit

Permalink
Create new epoch flags for state accum v2, since the old one was alre…
Browse files Browse the repository at this point in the history
…ady written in some places. Also fix chain-specific logic
  • Loading branch information
mystenmark committed Jun 28, 2024
1 parent f1089ab commit 3a30152
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 9 deletions.
9 changes: 6 additions & 3 deletions crates/sui-core/src/authority/authority_per_epoch_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -925,9 +925,12 @@ impl AuthorityPerEpochStore {
}

pub fn state_accumulator_v2_enabled(&self) -> bool {
self.epoch_start_configuration
.flags()
.contains(&EpochFlag::StateAccumulatorV2Enabled)
let flag = match self.get_chain_identifier().chain() {
Chain::Unknown | Chain::Testnet => EpochFlag::StateAccumulatorV2EnabledTestnet,
Chain::Mainnet => EpochFlag::StateAccumulatorV2EnabledMainnet,
};

self.epoch_start_configuration.flags().contains(&flag)
}

pub fn executed_in_epoch_table_enabled(&self) -> bool {
Expand Down
22 changes: 19 additions & 3 deletions crates/sui-core/src/authority/epoch_start_configuration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,14 @@ pub enum EpochFlag {
_ObjectLockSplitTablesDeprecated,

WritebackCacheEnabled,
StateAccumulatorV2Enabled,

// This flag was "burned" because it was deployed with a broken version of the code. The
// new flags below are required to enable state accumulator v2
_StateAccumulatorV2EnabledDeprecated,

ExecutedInEpochTable,
StateAccumulatorV2EnabledTestnet,
StateAccumulatorV2EnabledMainnet,
}

impl EpochFlag {
Expand All @@ -79,7 +85,9 @@ impl EpochFlag {
}

if enable_state_accumulator_v2 {
new_flags.push(EpochFlag::StateAccumulatorV2Enabled);
new_flags.push(EpochFlag::StateAccumulatorV2EnabledTestnet);
// TODO: enable on mainnet
// new_flags.push(EpochFlag::StateAccumulatorV2EnabledMainnet);
}

new_flags
Expand All @@ -100,8 +108,16 @@ impl fmt::Display for EpochFlag {
write!(f, "ObjectLockSplitTables (DEPRECATED)")
}
EpochFlag::WritebackCacheEnabled => write!(f, "WritebackCacheEnabled"),
EpochFlag::StateAccumulatorV2Enabled => write!(f, "StateAccumulatorV2Enabled"),
EpochFlag::_StateAccumulatorV2EnabledDeprecated => {
write!(f, "StateAccumulatorV2EnabledDeprecated (DEPRECATED)")
}
EpochFlag::ExecutedInEpochTable => write!(f, "ExecutedInEpochTable"),
EpochFlag::StateAccumulatorV2EnabledTestnet => {
write!(f, "StateAccumulatorV2EnabledTestnet")
}
EpochFlag::StateAccumulatorV2EnabledMainnet => {
write!(f, "StateAccumulatorV2EnabledMainnet")
}
}
}
}
Expand Down
4 changes: 1 addition & 3 deletions crates/sui-core/src/state_accumulator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,9 +389,7 @@ impl StateAccumulator {
epoch_store: &Arc<AuthorityPerEpochStore>,
metrics: Arc<StateAccumulatorMetrics>,
) -> Self {
if epoch_store.state_accumulator_v2_enabled()
&& epoch_store.get_chain_identifier().chain() != Chain::Mainnet
{
if epoch_store.state_accumulator_v2_enabled() {
StateAccumulator::V2(StateAccumulatorV2::new(store, metrics))
} else {
StateAccumulator::V1(StateAccumulatorV1::new(store, metrics))
Expand Down

0 comments on commit 3a30152

Please sign in to comment.