Skip to content

Commit ecd31c1

Browse files
authored
CommitTransactionDetails - include result (#7246)
1 parent 704f3f7 commit ecd31c1

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

core/src/banking_stage/committer.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use {
2020
transaction_commit_result::{TransactionCommitResult, TransactionCommitResultExtensions},
2121
transaction_processing_result::TransactionProcessingResult,
2222
},
23+
solana_transaction_error::TransactionError,
2324
std::{num::Saturating, sync::Arc},
2425
};
2526

@@ -28,8 +29,9 @@ pub enum CommitTransactionDetails {
2829
Committed {
2930
compute_units: u64,
3031
loaded_accounts_data_size: u32,
32+
result: Result<(), TransactionError>,
3133
},
32-
NotCommitted,
34+
NotCommitted(TransactionError),
3335
}
3436

3537
#[derive(Clone)]
@@ -85,8 +87,9 @@ impl Committer {
8587
loaded_accounts_data_size: committed_tx
8688
.loaded_account_stats
8789
.loaded_accounts_data_size,
90+
result: committed_tx.status.clone(),
8891
},
89-
Err(_) => CommitTransactionDetails::NotCommitted,
92+
Err(err) => CommitTransactionDetails::NotCommitted(err.clone()),
9093
})
9194
.collect();
9295

core/src/banking_stage/consumer.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,13 @@ impl Consumer {
401401
} else {
402402
(
403403
0,
404-
vec![CommitTransactionDetails::NotCommitted; processing_results.len()],
404+
processing_results
405+
.into_iter()
406+
.map(|processing_result| match processing_result {
407+
Ok(_) => unreachable!("processed transaction count is 0"),
408+
Err(err) => CommitTransactionDetails::NotCommitted(err),
409+
})
410+
.collect(),
405411
)
406412
};
407413

@@ -997,7 +1003,12 @@ mod tests {
9971003
assert!(retryable_transaction_indexes.is_empty());
9981004
assert_eq!(
9991005
commit_transactions_result.ok(),
1000-
Some(vec![CommitTransactionDetails::NotCommitted; 1])
1006+
Some(vec![
1007+
CommitTransactionDetails::NotCommitted(
1008+
TransactionError::AccountLoadedTwice
1009+
);
1010+
1
1011+
])
10011012
);
10021013

10031014
poh_recorder
@@ -1135,7 +1146,7 @@ mod tests {
11351146
);
11361147
assert_matches!(
11371148
commit_transactions_result.get(1),
1138-
Some(CommitTransactionDetails::NotCommitted)
1149+
Some(CommitTransactionDetails::NotCommitted(_))
11391150
);
11401151
assert_eq!(retryable_transaction_indexes, vec![1]);
11411152

@@ -1145,14 +1156,15 @@ mod tests {
11451156
CommitTransactionDetails::Committed {
11461157
compute_units,
11471158
loaded_accounts_data_size,
1159+
result: _,
11481160
} => (
11491161
*compute_units,
11501162
CostModel::calculate_loaded_accounts_data_size_cost(
11511163
*loaded_accounts_data_size,
11521164
&bank.feature_set,
11531165
),
11541166
),
1155-
CommitTransactionDetails::NotCommitted => {
1167+
CommitTransactionDetails::NotCommitted(_err) => {
11561168
unreachable!()
11571169
}
11581170
};
@@ -1791,6 +1803,7 @@ mod tests {
17911803
let CommitTransactionDetails::Committed {
17921804
compute_units,
17931805
loaded_accounts_data_size,
1806+
result: _,
17941807
} = consumer_output
17951808
.execute_and_commit_transactions_output
17961809
.commit_transactions_result

core/src/banking_stage/qos_service.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ impl QosService {
197197
CommitTransactionDetails::Committed {
198198
compute_units,
199199
loaded_accounts_data_size,
200+
result: _,
200201
} => {
201202
cost_tracker.update_execution_cost(
202203
tx_cost,
@@ -207,7 +208,7 @@ impl QosService {
207208
),
208209
);
209210
}
210-
CommitTransactionDetails::NotCommitted => {
211+
CommitTransactionDetails::NotCommitted(_err) => {
211212
cost_tracker.remove(tx_cost);
212213
}
213214
}
@@ -750,6 +751,7 @@ mod tests {
750751
+ execute_units_adjustment,
751752
loaded_accounts_data_size: loaded_accounts_data_size
752753
+ loaded_accounts_data_size_adjustment,
754+
result: Ok(()),
753755
})
754756
.collect();
755757
let final_txs_cost = total_txs_cost
@@ -871,13 +873,16 @@ mod tests {
871873
.enumerate()
872874
.map(|(n, tx_cost)| {
873875
if n % 2 == 0 {
874-
CommitTransactionDetails::NotCommitted
876+
CommitTransactionDetails::NotCommitted(
877+
TransactionError::InsufficientFundsForFee,
878+
)
875879
} else {
876880
CommitTransactionDetails::Committed {
877881
compute_units: tx_cost.as_ref().unwrap().programs_execution_cost()
878882
+ execute_units_adjustment,
879883
loaded_accounts_data_size: loaded_accounts_data_size
880884
+ loaded_accounts_data_size_adjustment,
885+
result: Ok(()),
881886
}
882887
}
883888
})

0 commit comments

Comments
 (0)