* Refactor: Improve type safety and readability of transaction execution (#22215) * resolve conflicts Co-authored-by: Justin Starry <justin@solana.com>
This commit is contained in:
@ -20,8 +20,8 @@ use {
|
||||
accounts_index::AccountSecondaryIndexes,
|
||||
accounts_update_notifier_interface::AccountsUpdateNotifier,
|
||||
bank::{
|
||||
Bank, ExecuteTimings, InnerInstructionsList, RentDebits, TransactionBalancesSet,
|
||||
TransactionExecutionResult, TransactionLogMessages, TransactionResults,
|
||||
Bank, ExecuteTimings, RentDebits, TransactionBalancesSet, TransactionExecutionResult,
|
||||
TransactionResults,
|
||||
},
|
||||
bank_forks::BankForks,
|
||||
bank_utils,
|
||||
@ -175,15 +175,14 @@ fn execute_batch(
|
||||
|
||||
let pre_process_units: u64 = aggregate_total_execution_units(timings);
|
||||
|
||||
let (tx_results, balances, inner_instructions, transaction_logs) =
|
||||
batch.bank().load_execute_and_commit_transactions(
|
||||
batch,
|
||||
MAX_PROCESSING_AGE,
|
||||
transaction_status_sender.is_some(),
|
||||
transaction_status_sender.is_some(),
|
||||
transaction_status_sender.is_some(),
|
||||
timings,
|
||||
);
|
||||
let (tx_results, balances) = batch.bank().load_execute_and_commit_transactions(
|
||||
batch,
|
||||
MAX_PROCESSING_AGE,
|
||||
transaction_status_sender.is_some(),
|
||||
transaction_status_sender.is_some(),
|
||||
transaction_status_sender.is_some(),
|
||||
timings,
|
||||
);
|
||||
|
||||
if bank
|
||||
.feature_set
|
||||
@ -238,8 +237,6 @@ fn execute_batch(
|
||||
execution_results,
|
||||
balances,
|
||||
token_balances,
|
||||
inner_instructions,
|
||||
transaction_logs,
|
||||
rent_debits,
|
||||
);
|
||||
}
|
||||
@ -1399,11 +1396,9 @@ pub enum TransactionStatusMessage {
|
||||
pub struct TransactionStatusBatch {
|
||||
pub bank: Arc<Bank>,
|
||||
pub transactions: Vec<SanitizedTransaction>,
|
||||
pub statuses: Vec<TransactionExecutionResult>,
|
||||
pub execution_results: Vec<TransactionExecutionResult>,
|
||||
pub balances: TransactionBalancesSet,
|
||||
pub token_balances: TransactionTokenBalancesSet,
|
||||
pub inner_instructions: Option<Vec<Option<InnerInstructionsList>>>,
|
||||
pub transaction_logs: Option<Vec<Option<TransactionLogMessages>>>,
|
||||
pub rent_debits: Vec<RentDebits>,
|
||||
}
|
||||
|
||||
@ -1418,29 +1413,28 @@ impl TransactionStatusSender {
|
||||
&self,
|
||||
bank: Arc<Bank>,
|
||||
transactions: Vec<SanitizedTransaction>,
|
||||
statuses: Vec<TransactionExecutionResult>,
|
||||
mut execution_results: Vec<TransactionExecutionResult>,
|
||||
balances: TransactionBalancesSet,
|
||||
token_balances: TransactionTokenBalancesSet,
|
||||
inner_instructions: Vec<Option<InnerInstructionsList>>,
|
||||
transaction_logs: Vec<Option<TransactionLogMessages>>,
|
||||
rent_debits: Vec<RentDebits>,
|
||||
) {
|
||||
let slot = bank.slot();
|
||||
let (inner_instructions, transaction_logs) = if !self.enable_cpi_and_log_storage {
|
||||
(None, None)
|
||||
} else {
|
||||
(Some(inner_instructions), Some(transaction_logs))
|
||||
};
|
||||
if !self.enable_cpi_and_log_storage {
|
||||
execution_results.iter_mut().for_each(|execution_result| {
|
||||
if let TransactionExecutionResult::Executed(details) = execution_result {
|
||||
details.log_messages.take();
|
||||
details.inner_instructions.take();
|
||||
}
|
||||
});
|
||||
}
|
||||
if let Err(e) = self
|
||||
.sender
|
||||
.send(TransactionStatusMessage::Batch(TransactionStatusBatch {
|
||||
bank,
|
||||
transactions,
|
||||
statuses,
|
||||
execution_results,
|
||||
balances,
|
||||
token_balances,
|
||||
inner_instructions,
|
||||
transaction_logs,
|
||||
rent_debits,
|
||||
}))
|
||||
{
|
||||
@ -3483,8 +3477,6 @@ pub mod tests {
|
||||
..
|
||||
},
|
||||
_balances,
|
||||
_inner_instructions,
|
||||
_log_messages,
|
||||
) = batch.bank().load_execute_and_commit_transactions(
|
||||
&batch,
|
||||
MAX_PROCESSING_AGE,
|
||||
|
Reference in New Issue
Block a user