Increment execution timings on errors as well (#22053)
This commit is contained in:
parent
f67ecd5c18
commit
37f6777ceb
|
@ -995,7 +995,7 @@ impl Executor for BpfExecutor {
|
|||
serialize_time.stop();
|
||||
let mut create_vm_time = Measure::start("create_vm");
|
||||
let mut execute_time;
|
||||
{
|
||||
let execution_result = {
|
||||
let mut vm = match create_vm(
|
||||
&self.executable,
|
||||
parameter_bytes.as_slice_mut(),
|
||||
|
@ -1040,12 +1040,10 @@ impl Executor for BpfExecutor {
|
|||
stable_log::program_return(&log_collector, &program_id, return_data);
|
||||
}
|
||||
match result {
|
||||
Ok(status) => {
|
||||
if status != SUCCESS {
|
||||
Ok(status) if status != SUCCESS => {
|
||||
let error: InstructionError = status.into();
|
||||
stable_log::program_failure(&log_collector, &program_id, &error);
|
||||
return Err(error);
|
||||
}
|
||||
Err(error)
|
||||
}
|
||||
Err(error) => {
|
||||
let error = match error {
|
||||
|
@ -1058,12 +1056,15 @@ impl Executor for BpfExecutor {
|
|||
}
|
||||
};
|
||||
stable_log::program_failure(&log_collector, &program_id, &error);
|
||||
return Err(error);
|
||||
Err(error)
|
||||
}
|
||||
_ => Ok(()),
|
||||
}
|
||||
};
|
||||
execute_time.stop();
|
||||
}
|
||||
|
||||
let mut deserialize_time = Measure::start("deserialize");
|
||||
let execute_or_deserialize_result = execution_result.and_then(|_| {
|
||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||
deserialize_parameters(
|
||||
&loader_id,
|
||||
|
@ -1073,8 +1074,11 @@ impl Executor for BpfExecutor {
|
|||
invoke_context
|
||||
.feature_set
|
||||
.is_active(&do_support_realloc::id()),
|
||||
)?;
|
||||
)
|
||||
});
|
||||
deserialize_time.stop();
|
||||
|
||||
// Update the timings
|
||||
let timings = &mut invoke_context.timings;
|
||||
timings.serialize_us = timings.serialize_us.saturating_add(serialize_time.as_us());
|
||||
timings.create_vm_us = timings.create_vm_us.saturating_add(create_vm_time.as_us());
|
||||
|
@ -1082,8 +1086,11 @@ impl Executor for BpfExecutor {
|
|||
timings.deserialize_us = timings
|
||||
.deserialize_us
|
||||
.saturating_add(deserialize_time.as_us());
|
||||
|
||||
if execute_or_deserialize_result.is_ok() {
|
||||
stable_log::program_success(&log_collector, &program_id);
|
||||
Ok(())
|
||||
}
|
||||
execute_or_deserialize_result
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue