diff --git a/rpc/src/transaction_status_service.rs b/rpc/src/transaction_status_service.rs index 49a78f22db7752..8a44c37229db2c 100644 --- a/rpc/src/transaction_status_service.rs +++ b/rpc/src/transaction_status_service.rs @@ -94,93 +94,94 @@ impl TransactionStatusService { token_balances.post_token_balances, transaction_indexes, ) { - if let Ok(committed_tx) = commit_result { - let CommittedTransaction { - execution_details: - TransactionExecutionDetails { - status, - log_messages, - inner_instructions, - return_data, - executed_units, - .. - }, - fee_details, - rent_debits, - .. - } = committed_tx; - let tx_account_locks = transaction.get_account_locks_unchecked(); - - let fee = fee_details.total_fee(); - let inner_instructions = inner_instructions.map(|inner_instructions| { - map_inner_instructions(inner_instructions).collect() - }); - - let pre_token_balances = Some(pre_token_balances); - let post_token_balances = Some(post_token_balances); - let rewards = Some( - rent_debits - .into_unordered_rewards_iter() - .map(|(pubkey, reward_info)| Reward { - pubkey: pubkey.to_string(), - lamports: reward_info.lamports, - post_balance: reward_info.post_balance, - reward_type: Some(reward_info.reward_type), - commission: reward_info.commission, - }) - .collect(), + let Ok(committed_tx) = commit_result else { + continue; + }; + + let CommittedTransaction { + execution_details: + TransactionExecutionDetails { + status, + log_messages, + inner_instructions, + return_data, + executed_units, + .. + }, + fee_details, + rent_debits, + .. + } = committed_tx; + let tx_account_locks = transaction.get_account_locks_unchecked(); + + let fee = fee_details.total_fee(); + let inner_instructions = inner_instructions.map(|inner_instructions| { + map_inner_instructions(inner_instructions).collect() + }); + + let pre_token_balances = Some(pre_token_balances); + let post_token_balances = Some(post_token_balances); + let rewards = Some( + rent_debits + .into_unordered_rewards_iter() + .map(|(pubkey, reward_info)| Reward { + pubkey: pubkey.to_string(), + lamports: reward_info.lamports, + post_balance: reward_info.post_balance, + reward_type: Some(reward_info.reward_type), + commission: reward_info.commission, + }) + .collect(), + ); + let loaded_addresses = transaction.get_loaded_addresses(); + let mut transaction_status_meta = TransactionStatusMeta { + status, + fee, + pre_balances, + post_balances, + inner_instructions, + log_messages, + pre_token_balances, + post_token_balances, + rewards, + loaded_addresses, + return_data, + compute_units_consumed: Some(executed_units), + }; + + if let Some(transaction_notifier) = transaction_notifier.as_ref() { + transaction_notifier.notify_transaction( + slot, + transaction_index, + transaction.signature(), + &transaction_status_meta, + &transaction, ); - let loaded_addresses = transaction.get_loaded_addresses(); - let mut transaction_status_meta = TransactionStatusMeta { - status, - fee, - pre_balances, - post_balances, - inner_instructions, - log_messages, - pre_token_balances, - post_token_balances, - rewards, - loaded_addresses, - return_data, - compute_units_consumed: Some(executed_units), - }; - - if let Some(transaction_notifier) = transaction_notifier.as_ref() { - transaction_notifier.notify_transaction( - slot, - transaction_index, - transaction.signature(), - &transaction_status_meta, - &transaction, - ); - } - - if !(enable_extended_tx_metadata_storage || transaction_notifier.is_some()) - { - transaction_status_meta.log_messages.take(); - transaction_status_meta.inner_instructions.take(); - transaction_status_meta.return_data.take(); - } + } - if enable_rpc_transaction_history { - if let Some(memos) = extract_and_fmt_memos(transaction.message()) { - blockstore - .write_transaction_memos(transaction.signature(), slot, memos) - .expect("Expect database write to succeed: TransactionMemos"); - } + if !(enable_extended_tx_metadata_storage || transaction_notifier.is_some()) { + transaction_status_meta.log_messages.take(); + transaction_status_meta.inner_instructions.take(); + transaction_status_meta.return_data.take(); + } + if enable_rpc_transaction_history { + if let Some(memos) = extract_and_fmt_memos(transaction.message()) { blockstore - .write_transaction_status( - slot, - *transaction.signature(), - tx_account_locks.writable, - tx_account_locks.readonly, - transaction_status_meta, - transaction_index, - ) - .expect("Expect database write to succeed: TransactionStatus"); + .write_transaction_memos(transaction.signature(), slot, memos) + .expect("Expect database write to succeed: TransactionMemos"); } + + blockstore + .write_transaction_status( + slot, + *transaction.signature(), + tx_account_locks.writable, + tx_account_locks.readonly, + transaction_status_meta, + transaction_index, + ) + .expect("Expect database write to succeed: TransactionStatus"); } } }