From e66ea7cb6ac1b9881b11c81ecfec287af6a59754 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Mon, 9 May 2022 21:19:32 +0800 Subject: [PATCH] Clean up Bank::commit_transactions parameters --- core/src/banking_stage.rs | 19 +++++++++++++------ runtime/src/bank.rs | 36 +++++++++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 748bd60091..f7dda3ae1a 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -29,7 +29,8 @@ use { solana_program_runtime::timings::ExecuteTimings, solana_runtime::{ bank::{ - Bank, LoadAndExecuteTransactionsOutput, TransactionBalancesSet, TransactionCheckResult, + Bank, CommitTransactionCounts, LoadAndExecuteTransactionsOutput, + TransactionBalancesSet, TransactionCheckResult, }, bank_utils, cost_model::{CostModel, TransactionCost}, @@ -1229,6 +1230,8 @@ impl BankingStage { "execution_results_to_transactions", ); + let (last_blockhash, lamports_per_signature) = + bank.last_blockhash_and_lamports_per_signature(); let (freeze_lock, freeze_lock_time) = Measure::this(|_| bank.freeze_lock(), (), "freeze_lock"); execute_and_commit_timings.freeze_lock_us = freeze_lock_time.as_us(); @@ -1283,11 +1286,15 @@ impl BankingStage { sanitized_txs, &mut loaded_transactions, execution_results, - executed_transactions_count as u64, - executed_transactions_count - .saturating_sub(executed_with_successful_result_count) - as u64, - signature_count, + last_blockhash, + lamports_per_signature, + CommitTransactionCounts { + committed_transactions_count: executed_transactions_count as u64, + committed_with_failure_result_count: executed_transactions_count + .saturating_sub(executed_with_successful_result_count) + as u64, + signature_count, + }, &mut execute_and_commit_timings.execute_timings, ) }, diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 437b51bd3d..417d30e0f2 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -1368,6 +1368,12 @@ struct PrevEpochInflationRewards { foundation_rate: f64, } +pub struct CommitTransactionCounts { + pub committed_transactions_count: u64, + pub committed_with_failure_result_count: u64, + pub signature_count: u64, +} + impl Bank { pub fn default_for_tests() -> Self { Self::default_with_accounts(Accounts::default_for_tests()) @@ -4745,9 +4751,9 @@ impl Bank { sanitized_txs: &[SanitizedTransaction], loaded_txs: &mut [TransactionLoadResult], execution_results: Vec, - committed_transactions_count: u64, - committed_with_failure_result_count: u64, - signature_count: u64, + last_blockhash: Hash, + lamports_per_signature: u64, + counts: CommitTransactionCounts, timings: &mut ExecuteTimings, ) -> TransactionResults { assert!( @@ -4755,6 +4761,12 @@ impl Bank { "commit_transactions() working on a bank that is already frozen or is undergoing freezing!" ); + let CommitTransactionCounts { + committed_transactions_count, + committed_with_failure_result_count, + signature_count, + } = counts; + let tx_count = if self.bank_tranaction_count_fix_enabled() { committed_transactions_count } else { @@ -4783,7 +4795,6 @@ impl Bank { .fetch_max(committed_transactions_count, Relaxed); } - let (blockhash, lamports_per_signature) = self.last_blockhash_and_lamports_per_signature(); let mut write_time = Measure::start("write_time"); self.rc.accounts.store_cached( self.slot(), @@ -4791,7 +4802,7 @@ impl Bank { &execution_results, loaded_txs, &self.rent_collector, - &blockhash, + &last_blockhash, lamports_per_signature, self.leave_nonce_on_success(), ); @@ -5723,14 +5734,21 @@ impl Bank { None, ); + let (last_blockhash, lamports_per_signature) = + self.last_blockhash_and_lamports_per_signature(); let results = self.commit_transactions( batch.sanitized_transactions(), &mut loaded_transactions, execution_results, - executed_transactions_count as u64, - executed_transactions_count.saturating_sub(executed_with_successful_result_count) - as u64, - signature_count, + last_blockhash, + lamports_per_signature, + CommitTransactionCounts { + committed_transactions_count: executed_transactions_count as u64, + committed_with_failure_result_count: executed_transactions_count + .saturating_sub(executed_with_successful_result_count) + as u64, + signature_count, + }, timings, ); let post_balances = if collect_balances {