|
21 | 21 | itertools::Itertools, |
22 | 22 | min_max_heap::MinMaxHeap, |
23 | 23 | solana_accounts_db::transaction_error_metrics::TransactionErrorMetrics, |
24 | | - solana_bundle::BundleExecutionError, |
| 24 | + solana_bundle::{bundle_execution::LoadAndExecuteBundleError, BundleExecutionError}, |
25 | 25 | solana_measure::measure, |
26 | 26 | solana_runtime::bank::Bank, |
27 | 27 | solana_sdk::{ |
@@ -1249,18 +1249,32 @@ impl BundleStorage { |
1249 | 1249 | rebuffered_bundles.push(deserialized_bundle); |
1250 | 1250 | is_slot_over = true; |
1251 | 1251 | } |
| 1252 | + Err(BundleExecutionError::ExceedsCostModel) => { |
| 1253 | + // cost model buffered bundles contain most recent bundles at the front of the queue |
| 1254 | + debug!( |
| 1255 | + "bundle={} exceeds cost model, rebuffering", |
| 1256 | + sanitized_bundle.bundle_id |
| 1257 | + ); |
| 1258 | + self.push_back_cost_model_buffered_bundles(vec![deserialized_bundle]); |
| 1259 | + } |
| 1260 | + Err(BundleExecutionError::TransactionFailure( |
| 1261 | + LoadAndExecuteBundleError::ProcessingTimeExceeded(_), |
| 1262 | + )) => { |
| 1263 | + // these are treated the same as exceeds cost model and are rebuferred to be completed |
| 1264 | + // at the beginning of the next slot |
| 1265 | + debug!( |
| 1266 | + "bundle={} processing time exceeded, rebuffering", |
| 1267 | + sanitized_bundle.bundle_id |
| 1268 | + ); |
| 1269 | + self.push_back_cost_model_buffered_bundles(vec![deserialized_bundle]); |
| 1270 | + } |
1252 | 1271 | Err(BundleExecutionError::TransactionFailure(e)) => { |
1253 | 1272 | debug!( |
1254 | 1273 | "bundle={} execution error: {:?}", |
1255 | 1274 | sanitized_bundle.bundle_id, e |
1256 | 1275 | ); |
1257 | 1276 | // do nothing |
1258 | 1277 | } |
1259 | | - Err(BundleExecutionError::ExceedsCostModel) => { |
1260 | | - // cost model buffered bundles contain most recent bundles at the front of the queue |
1261 | | - debug!("bundle={} exceeds cost model", sanitized_bundle.bundle_id); |
1262 | | - self.push_back_cost_model_buffered_bundles(vec![deserialized_bundle]); |
1263 | | - } |
1264 | 1278 | Err(BundleExecutionError::TipError(e)) => { |
1265 | 1279 | debug!("bundle={} tip error: {}", sanitized_bundle.bundle_id, e); |
1266 | 1280 | // Tip errors are _typically_ due to misconfiguration (except for poh record error, bank processing error, exceeds cost model) |
|
0 commit comments