Cleanup - Feature gate of `delay_visibility_of_program_deployment` (#34087)

* Cleans up feature gate of delay_visibility_of_program_deployment.

* Removes programs_updated_only_for_global_cache.
This commit is contained in:
Alexander Meißner 2023-11-15 18:29:31 +01:00 committed by GitHub
parent d93280c287
commit ffa462dd3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 11 additions and 77 deletions

View File

@ -1459,7 +1459,6 @@ mod tests {
accounts_data_len_delta: 0, accounts_data_len_delta: 0,
}, },
programs_modified_by_tx: Box::<LoadedProgramsForTxBatch>::default(), programs_modified_by_tx: Box::<LoadedProgramsForTxBatch>::default(),
programs_updated_only_for_global_cache: Box::<LoadedProgramsForTxBatch>::default(),
} }
} }

View File

@ -34,7 +34,6 @@ pub enum TransactionExecutionResult {
Executed { Executed {
details: TransactionExecutionDetails, details: TransactionExecutionDetails,
programs_modified_by_tx: Box<LoadedProgramsForTxBatch>, programs_modified_by_tx: Box<LoadedProgramsForTxBatch>,
programs_updated_only_for_global_cache: Box<LoadedProgramsForTxBatch>,
}, },
NotExecuted(TransactionError), NotExecuted(TransactionError),
} }

View File

@ -27,7 +27,6 @@ use {
account::AccountSharedData, account::AccountSharedData,
account_utils::StateMut, account_utils::StateMut,
bpf_loader_upgradeable::{self, UpgradeableLoaderState}, bpf_loader_upgradeable::{self, UpgradeableLoaderState},
feature_set,
pubkey::Pubkey, pubkey::Pubkey,
slot_history::Slot, slot_history::Slot,
transaction_context::{IndexOfAccount, InstructionAccount}, transaction_context::{IndexOfAccount, InstructionAccount},
@ -358,9 +357,6 @@ fn load_program<'a>(
#[allow(unused_mut)] #[allow(unused_mut)]
let mut verified_executable = if is_elf { let mut verified_executable = if is_elf {
let result = load_program_from_bytes( let result = load_program_from_bytes(
invoke_context
.feature_set
.is_active(&feature_set::delay_visibility_of_program_deployment::id()),
log_collector, log_collector,
&mut load_program_metrics, &mut load_program_metrics,
&contents, &contents,

View File

@ -167,7 +167,6 @@ pub struct InvokeContext<'a> {
accounts_data_meter: AccountsDataMeter, accounts_data_meter: AccountsDataMeter,
pub programs_loaded_for_tx_batch: &'a LoadedProgramsForTxBatch, pub programs_loaded_for_tx_batch: &'a LoadedProgramsForTxBatch,
pub programs_modified_by_tx: &'a mut LoadedProgramsForTxBatch, pub programs_modified_by_tx: &'a mut LoadedProgramsForTxBatch,
pub programs_updated_only_for_global_cache: &'a mut LoadedProgramsForTxBatch,
pub feature_set: Arc<FeatureSet>, pub feature_set: Arc<FeatureSet>,
pub timings: ExecuteDetailsTimings, pub timings: ExecuteDetailsTimings,
pub blockhash: Hash, pub blockhash: Hash,
@ -185,7 +184,6 @@ impl<'a> InvokeContext<'a> {
compute_budget: ComputeBudget, compute_budget: ComputeBudget,
programs_loaded_for_tx_batch: &'a LoadedProgramsForTxBatch, programs_loaded_for_tx_batch: &'a LoadedProgramsForTxBatch,
programs_modified_by_tx: &'a mut LoadedProgramsForTxBatch, programs_modified_by_tx: &'a mut LoadedProgramsForTxBatch,
programs_updated_only_for_global_cache: &'a mut LoadedProgramsForTxBatch,
feature_set: Arc<FeatureSet>, feature_set: Arc<FeatureSet>,
blockhash: Hash, blockhash: Hash,
lamports_per_signature: u64, lamports_per_signature: u64,
@ -201,7 +199,6 @@ impl<'a> InvokeContext<'a> {
accounts_data_meter: AccountsDataMeter::new(prev_accounts_data_len), accounts_data_meter: AccountsDataMeter::new(prev_accounts_data_len),
programs_loaded_for_tx_batch, programs_loaded_for_tx_batch,
programs_modified_by_tx, programs_modified_by_tx,
programs_updated_only_for_global_cache,
feature_set, feature_set,
timings: ExecuteDetailsTimings::default(), timings: ExecuteDetailsTimings::default(),
blockhash, blockhash,
@ -688,7 +685,6 @@ macro_rules! with_mock_invoke_context {
}); });
let programs_loaded_for_tx_batch = LoadedProgramsForTxBatch::default(); let programs_loaded_for_tx_batch = LoadedProgramsForTxBatch::default();
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let mut $invoke_context = InvokeContext::new( let mut $invoke_context = InvokeContext::new(
&mut $transaction_context, &mut $transaction_context,
&sysvar_cache, &sysvar_cache,
@ -696,7 +692,6 @@ macro_rules! with_mock_invoke_context {
compute_budget, compute_budget,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
Hash::default(), Hash::default(),
0, 0,

View File

@ -56,7 +56,6 @@ impl MessageProcessor {
log_collector: Option<Rc<RefCell<LogCollector>>>, log_collector: Option<Rc<RefCell<LogCollector>>>,
programs_loaded_for_tx_batch: &LoadedProgramsForTxBatch, programs_loaded_for_tx_batch: &LoadedProgramsForTxBatch,
programs_modified_by_tx: &mut LoadedProgramsForTxBatch, programs_modified_by_tx: &mut LoadedProgramsForTxBatch,
programs_updated_only_for_global_cache: &mut LoadedProgramsForTxBatch,
feature_set: Arc<FeatureSet>, feature_set: Arc<FeatureSet>,
compute_budget: ComputeBudget, compute_budget: ComputeBudget,
timings: &mut ExecuteTimings, timings: &mut ExecuteTimings,
@ -73,7 +72,6 @@ impl MessageProcessor {
compute_budget, compute_budget,
programs_loaded_for_tx_batch, programs_loaded_for_tx_batch,
programs_modified_by_tx, programs_modified_by_tx,
programs_updated_only_for_global_cache,
feature_set, feature_set,
blockhash, blockhash,
lamports_per_signature, lamports_per_signature,
@ -302,7 +300,6 @@ mod tests {
))); )));
let sysvar_cache = SysvarCache::default(); let sysvar_cache = SysvarCache::default();
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&program_indices, &program_indices,
@ -310,7 +307,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),
@ -354,7 +350,6 @@ mod tests {
]), ]),
))); )));
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&program_indices, &program_indices,
@ -362,7 +357,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),
@ -396,7 +390,6 @@ mod tests {
]), ]),
))); )));
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&program_indices, &program_indices,
@ -404,7 +397,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),
@ -528,7 +520,6 @@ mod tests {
))); )));
let sysvar_cache = SysvarCache::default(); let sysvar_cache = SysvarCache::default();
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&program_indices, &program_indices,
@ -536,7 +527,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),
@ -564,7 +554,6 @@ mod tests {
Some(transaction_context.get_key_of_account_at_index(0).unwrap()), Some(transaction_context.get_key_of_account_at_index(0).unwrap()),
))); )));
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&program_indices, &program_indices,
@ -572,7 +561,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),
@ -597,7 +585,6 @@ mod tests {
Some(transaction_context.get_key_of_account_at_index(0).unwrap()), Some(transaction_context.get_key_of_account_at_index(0).unwrap()),
))); )));
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&program_indices, &program_indices,
@ -605,7 +592,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),
@ -687,7 +673,6 @@ mod tests {
Arc::new(LoadedProgram::new_builtin(0, 0, MockBuiltin::vm)), Arc::new(LoadedProgram::new_builtin(0, 0, MockBuiltin::vm)),
); );
let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default(); let mut programs_modified_by_tx = LoadedProgramsForTxBatch::default();
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::default();
let result = MessageProcessor::process_message( let result = MessageProcessor::process_message(
&message, &message,
&[vec![0], vec![1]], &[vec![0], vec![1]],
@ -695,7 +680,6 @@ mod tests {
None, None,
&programs_loaded_for_tx_batch, &programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
Arc::new(FeatureSet::all_enabled()), Arc::new(FeatureSet::all_enabled()),
ComputeBudget::default(), ComputeBudget::default(),
&mut ExecuteTimings::default(), &mut ExecuteTimings::default(),

View File

@ -34,10 +34,9 @@ use {
clock::Slot, clock::Slot,
entrypoint::{MAX_PERMITTED_DATA_INCREASE, SUCCESS}, entrypoint::{MAX_PERMITTED_DATA_INCREASE, SUCCESS},
feature_set::{ feature_set::{
bpf_account_data_direct_mapping, delay_visibility_of_program_deployment, bpf_account_data_direct_mapping, enable_bpf_loader_extend_program_ix,
enable_bpf_loader_extend_program_ix, enable_bpf_loader_set_authority_checked_ix, enable_bpf_loader_set_authority_checked_ix, enable_program_redeployment_cooldown,
enable_program_redeployment_cooldown, native_programs_consume_cu, native_programs_consume_cu, remove_bpf_loader_incorrect_program_id,
remove_bpf_loader_incorrect_program_id,
}, },
instruction::{AccountMeta, InstructionError}, instruction::{AccountMeta, InstructionError},
loader_instruction::LoaderInstruction, loader_instruction::LoaderInstruction,
@ -66,7 +65,6 @@ pub const UPGRADEABLE_LOADER_COMPUTE_UNITS: u64 = 2_370;
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub fn load_program_from_bytes( pub fn load_program_from_bytes(
delay_visibility_of_program_deployment: bool,
log_collector: Option<Rc<RefCell<LogCollector>>>, log_collector: Option<Rc<RefCell<LogCollector>>>,
load_program_metrics: &mut LoadProgramMetrics, load_program_metrics: &mut LoadProgramMetrics,
programdata: &[u8], programdata: &[u8],
@ -76,11 +74,7 @@ pub fn load_program_from_bytes(
program_runtime_environment: Arc<BuiltinProgram<InvokeContext<'static>>>, program_runtime_environment: Arc<BuiltinProgram<InvokeContext<'static>>>,
reloading: bool, reloading: bool,
) -> Result<LoadedProgram, InstructionError> { ) -> Result<LoadedProgram, InstructionError> {
let effective_slot = if delay_visibility_of_program_deployment { let effective_slot = deployment_slot.saturating_add(DELAY_VISIBILITY_SLOT_OFFSET);
deployment_slot.saturating_add(DELAY_VISIBILITY_SLOT_OFFSET)
} else {
deployment_slot
};
let loaded_program = if reloading { let loaded_program = if reloading {
// Safety: this is safe because the program is being reloaded in the cache. // Safety: this is safe because the program is being reloaded in the cache.
unsafe { unsafe {
@ -150,7 +144,6 @@ macro_rules! deploy_program {
load_program_metrics.verify_code_us = verify_code_time.as_us(); load_program_metrics.verify_code_us = verify_code_time.as_us();
// Reload but with environments.program_runtime_v1 // Reload but with environments.program_runtime_v1
let executor = load_program_from_bytes( let executor = load_program_from_bytes(
$invoke_context.feature_set.is_active(&delay_visibility_of_program_deployment::id()),
$invoke_context.get_log_collector(), $invoke_context.get_log_collector(),
&mut load_program_metrics, &mut load_program_metrics,
$new_programdata, $new_programdata,
@ -1228,28 +1221,13 @@ fn process_loader_upgradeable_instruction(
&log_collector, &log_collector,
)?; )?;
let clock = invoke_context.get_sysvar_cache().get_clock()?; let clock = invoke_context.get_sysvar_cache().get_clock()?;
if invoke_context invoke_context.programs_modified_by_tx.replenish(
.feature_set program_key,
.is_active(&delay_visibility_of_program_deployment::id()) Arc::new(LoadedProgram::new_tombstone(
{ clock.slot,
invoke_context.programs_modified_by_tx.replenish( LoadedProgramType::Closed,
program_key, )),
Arc::new(LoadedProgram::new_tombstone( );
clock.slot,
LoadedProgramType::Closed,
)),
);
} else {
invoke_context
.programs_updated_only_for_global_cache
.replenish(
program_key,
Arc::new(LoadedProgram::new_tombstone(
clock.slot,
LoadedProgramType::Closed,
)),
);
}
} }
_ => { _ => {
ic_logger_msg!(log_collector, "Invalid Program account"); ic_logger_msg!(log_collector, "Invalid Program account");
@ -1711,7 +1689,6 @@ pub mod test_utils {
.expect("Failed to get account key"); .expect("Failed to get account key");
if let Ok(loaded_program) = load_program_from_bytes( if let Ok(loaded_program) = load_program_from_bytes(
true,
None, None,
&mut load_program_metrics, &mut load_program_metrics,
account.data(), account.data(),

View File

@ -4733,8 +4733,6 @@ impl Bank {
ProgramAccountLoadResult::ProgramOfLoaderV1orV2(program_account) => { ProgramAccountLoadResult::ProgramOfLoaderV1orV2(program_account) => {
solana_bpf_loader_program::load_program_from_bytes( solana_bpf_loader_program::load_program_from_bytes(
self.feature_set
.is_active(&feature_set::delay_visibility_of_program_deployment::id()),
None, None,
&mut load_program_metrics, &mut load_program_metrics,
program_account.data(), program_account.data(),
@ -4756,8 +4754,6 @@ impl Bank {
.ok_or(InstructionError::InvalidAccountData) .ok_or(InstructionError::InvalidAccountData)
.and_then(|programdata| { .and_then(|programdata| {
solana_bpf_loader_program::load_program_from_bytes( solana_bpf_loader_program::load_program_from_bytes(
self.feature_set
.is_active(&feature_set::delay_visibility_of_program_deployment::id()),
None, None,
&mut load_program_metrics, &mut load_program_metrics,
programdata, programdata,
@ -4915,10 +4911,6 @@ impl Bank {
self.slot, self.slot,
programs_loaded_for_tx_batch.environments.clone(), programs_loaded_for_tx_batch.environments.clone(),
); );
let mut programs_updated_only_for_global_cache = LoadedProgramsForTxBatch::new(
self.slot,
programs_loaded_for_tx_batch.environments.clone(),
);
let mut process_message_time = Measure::start("process_message_time"); let mut process_message_time = Measure::start("process_message_time");
let process_result = MessageProcessor::process_message( let process_result = MessageProcessor::process_message(
tx.message(), tx.message(),
@ -4927,7 +4919,6 @@ impl Bank {
log_collector.clone(), log_collector.clone(),
programs_loaded_for_tx_batch, programs_loaded_for_tx_batch,
&mut programs_modified_by_tx, &mut programs_modified_by_tx,
&mut programs_updated_only_for_global_cache,
self.feature_set.clone(), self.feature_set.clone(),
compute_budget, compute_budget,
timings, timings,
@ -5027,9 +5018,6 @@ impl Bank {
accounts_data_len_delta, accounts_data_len_delta,
}, },
programs_modified_by_tx: Box::new(programs_modified_by_tx), programs_modified_by_tx: Box::new(programs_modified_by_tx),
programs_updated_only_for_global_cache: Box::new(
programs_updated_only_for_global_cache,
),
} }
} }
@ -5312,7 +5300,6 @@ impl Bank {
if let TransactionExecutionResult::Executed { if let TransactionExecutionResult::Executed {
details, details,
programs_modified_by_tx, programs_modified_by_tx,
programs_updated_only_for_global_cache: _,
} = &result } = &result
{ {
// Update batch specific cache of the loaded programs with the modifications // Update batch specific cache of the loaded programs with the modifications
@ -5689,13 +5676,11 @@ impl Bank {
if let TransactionExecutionResult::Executed { if let TransactionExecutionResult::Executed {
details, details,
programs_modified_by_tx, programs_modified_by_tx,
programs_updated_only_for_global_cache,
} = execution_result } = execution_result
{ {
if details.status.is_ok() { if details.status.is_ok() {
let mut cache = self.loaded_programs_cache.write().unwrap(); let mut cache = self.loaded_programs_cache.write().unwrap();
cache.merge(programs_modified_by_tx); cache.merge(programs_modified_by_tx);
cache.merge(programs_updated_only_for_global_cache);
} }
} }
} }

View File

@ -204,7 +204,6 @@ fn new_execution_result(
accounts_data_len_delta: 0, accounts_data_len_delta: 0,
}, },
programs_modified_by_tx: Box::<LoadedProgramsForTxBatch>::default(), programs_modified_by_tx: Box::<LoadedProgramsForTxBatch>::default(),
programs_updated_only_for_global_cache: Box::<LoadedProgramsForTxBatch>::default(),
} }
} }