Move updating accounts data len from execute to commit (#25256)

This commit is contained in:
Brooks Prumo 2022-05-19 12:24:13 -05:00 committed by GitHub
parent 8c39648ec6
commit 021276c955
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 6 deletions

View File

@ -351,7 +351,8 @@ pub(crate) mod tests {
.unwrap(),
)),
return_data: None,
executed_units: 0u64,
executed_units: 0,
accounts_data_len_delta: 0,
});
let balances = TransactionBalancesSet {

View File

@ -1423,7 +1423,8 @@ mod tests {
inner_instructions: None,
durable_nonce_fee: nonce.map(DurableNonceFee::from),
return_data: None,
executed_units: 0u64,
executed_units: 0,
accounts_data_len_delta: 0,
},
executors: Rc::new(RefCell::new(Executors::default())),
}

View File

@ -605,6 +605,9 @@ pub struct TransactionExecutionDetails {
pub durable_nonce_fee: Option<DurableNonceFee>,
pub return_data: Option<TransactionReturnData>,
pub executed_units: u64,
/// The change in accounts data len for this transaction.
/// NOTE: This value is valid IFF `status` is `Ok`.
pub accounts_data_len_delta: i64,
}
/// Type safe representation of a transaction execution attempt which
@ -4240,9 +4243,6 @@ impl Bank {
)
.map(|_| info)
})
.map(|info| {
self.update_accounts_data_len(info.accounts_data_len_delta);
})
.map_err(|err| {
match err {
TransactionError::InvalidRentPayingAccount
@ -4255,6 +4255,10 @@ impl Bank {
}
err
});
let accounts_data_len_delta = status
.as_ref()
.map_or(0, |info| info.accounts_data_len_delta);
let status = status.map(|_| ());
let log_messages: Option<TransactionLogMessages> =
log_collector.and_then(|log_collector| {
@ -4299,6 +4303,7 @@ impl Bank {
durable_nonce_fee,
return_data,
executed_units,
accounts_data_len_delta,
},
executors,
}
@ -4809,6 +4814,16 @@ impl Bank {
update_executors_time.as_us()
);
let accounts_data_len_delta = execution_results
.iter()
.filter_map(|execution_result| {
execution_result
.details()
.map(|details| details.accounts_data_len_delta)
})
.sum();
self.update_accounts_data_len(accounts_data_len_delta);
timings.saturating_add_in_place(ExecuteTimingType::StoreUs, write_time.as_us());
timings.saturating_add_in_place(
ExecuteTimingType::UpdateStakesCacheUs,
@ -7311,7 +7326,8 @@ pub(crate) mod tests {
inner_instructions: None,
durable_nonce_fee: nonce.map(DurableNonceFee::from),
return_data: None,
executed_units: 0u64,
executed_units: 0,
accounts_data_len_delta: 0,
},
executors: Rc::new(RefCell::new(Executors::default())),
}