diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 12d3b2c1d2167e..6539d4aadf1410 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -3040,6 +3040,7 @@ mod tests { true, None, blockstore.clone(), + false, &Arc::new(AtomicBool::new(false)), ); @@ -3052,7 +3053,6 @@ mod tests { 0, Some(TransactionStatusSender { sender: transaction_status_sender, - enable_cpi_and_log_storage: false, }), &gossip_vote_sender, &QosService::new(Arc::new(RwLock::new(CostModel::default())), 1), @@ -3199,6 +3199,7 @@ mod tests { true, None, blockstore.clone(), + false, &Arc::new(AtomicBool::new(false)), ); @@ -3211,7 +3212,6 @@ mod tests { 0, Some(TransactionStatusSender { sender: transaction_status_sender, - enable_cpi_and_log_storage: false, }), &gossip_vote_sender, &QosService::new(Arc::new(RwLock::new(CostModel::default())), 1), diff --git a/core/src/validator.rs b/core/src/validator.rs index 4273871edb810d..edf10f1d5ec1f9 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -1508,7 +1508,6 @@ fn initialize_rpc_transaction_history_services( let (transaction_status_sender, transaction_status_receiver) = unbounded(); let transaction_status_sender = Some(TransactionStatusSender { sender: transaction_status_sender, - enable_cpi_and_log_storage, }); let transaction_status_service = Some(TransactionStatusService::new( transaction_status_receiver, @@ -1516,6 +1515,7 @@ fn initialize_rpc_transaction_history_services( enable_rpc_transaction_history, transaction_notifier.clone(), blockstore.clone(), + enable_cpi_and_log_storage, exit, )); diff --git a/ledger/src/blockstore_processor.rs b/ledger/src/blockstore_processor.rs index 360740b556f079..526f84dc50a809 100644 --- a/ledger/src/blockstore_processor.rs +++ b/ledger/src/blockstore_processor.rs @@ -1496,7 +1496,6 @@ pub struct TransactionStatusBatch { #[derive(Clone)] pub struct TransactionStatusSender { pub sender: Sender, - pub enable_cpi_and_log_storage: bool, } impl TransactionStatusSender { @@ -1504,20 +1503,13 @@ impl TransactionStatusSender { &self, bank: Arc, transactions: Vec, - mut execution_results: Vec, + execution_results: Vec, balances: TransactionBalancesSet, token_balances: TransactionTokenBalancesSet, rent_debits: Vec, ) { let slot = bank.slot(); - 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 { diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 1e23f3a400f318..613fc71497c13e 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -4330,6 +4330,7 @@ pub fn create_test_transactions_and_populate_blockstore( true, None, blockstore, + false, &Arc::new(AtomicBool::new(false)), ); @@ -4343,7 +4344,6 @@ pub fn create_test_transactions_and_populate_blockstore( Some( &solana_ledger::blockstore_processor::TransactionStatusSender { sender: transaction_status_sender, - enable_cpi_and_log_storage: false, }, ), Some(&replay_vote_sender), diff --git a/rpc/src/transaction_status_service.rs b/rpc/src/transaction_status_service.rs index 3b1afb23437bf5..6e2a453ff17f1e 100644 --- a/rpc/src/transaction_status_service.rs +++ b/rpc/src/transaction_status_service.rs @@ -34,6 +34,7 @@ impl TransactionStatusService { enable_rpc_transaction_history: bool, transaction_notifier: Option, blockstore: Arc, + enable_cpi_and_log_storage: bool, exit: &Arc, ) -> Self { let exit = exit.clone(); @@ -50,6 +51,7 @@ impl TransactionStatusService { enable_rpc_transaction_history, transaction_notifier.clone(), &blockstore, + enable_cpi_and_log_storage, ) { break; } @@ -64,6 +66,7 @@ impl TransactionStatusService { enable_rpc_transaction_history: bool, transaction_notifier: Option, blockstore: &Arc, + enable_cpi_and_log_storage: bool, ) -> Result<(), RecvTimeoutError> { match write_transaction_status_receiver.recv_timeout(Duration::from_secs(1))? { TransactionStatusMessage::Batch(TransactionStatusBatch { @@ -142,7 +145,7 @@ impl TransactionStatusService { .collect(), ); let loaded_addresses = transaction.get_loaded_addresses(); - let transaction_status_meta = TransactionStatusMeta { + let mut transaction_status_meta = TransactionStatusMeta { status, fee, pre_balances, @@ -163,6 +166,12 @@ impl TransactionStatusService { &transaction, ); } + + if !(enable_cpi_and_log_storage || transaction_notifier.is_some()) { + transaction_status_meta.log_messages.take(); + transaction_status_meta.inner_instructions.take(); + } + if enable_rpc_transaction_history { if let Some(memos) = extract_and_fmt_memos(transaction.message()) { blockstore @@ -385,6 +394,7 @@ pub(crate) mod tests { false, Some(test_notifier.clone()), blockstore, + false, &exit, );