* Increment execution timings on errors as well (#22053)
(cherry picked from commit 37f6777ceb
)
# Conflicts:
# programs/bpf_loader/src/lib.rs
* Fix conflicts
Co-authored-by: carllin <carl@solana.com>
This commit is contained in:
@ -912,7 +912,7 @@ impl Executor for BpfExecutor {
|
|||||||
serialize_time.stop();
|
serialize_time.stop();
|
||||||
let mut create_vm_time = Measure::start("create_vm");
|
let mut create_vm_time = Measure::start("create_vm");
|
||||||
let mut execute_time;
|
let mut execute_time;
|
||||||
{
|
let execution_result = {
|
||||||
let compute_meter = invoke_context.get_compute_meter();
|
let compute_meter = invoke_context.get_compute_meter();
|
||||||
let mut vm = match create_vm(
|
let mut vm = match create_vm(
|
||||||
loader_id,
|
loader_id,
|
||||||
@ -958,19 +958,17 @@ impl Executor for BpfExecutor {
|
|||||||
stable_log::program_return(&logger, program_id, return_data);
|
stable_log::program_return(&logger, program_id, return_data);
|
||||||
}
|
}
|
||||||
match result {
|
match result {
|
||||||
Ok(status) => {
|
Ok(status) if status != SUCCESS => {
|
||||||
if status != SUCCESS {
|
let error: InstructionError = if !add_missing_program_error_mappings
|
||||||
let error: InstructionError = if !add_missing_program_error_mappings
|
&& (status == ACCOUNT_NOT_RENT_EXEMPT || status == BORSH_IO_ERROR)
|
||||||
&& (status == ACCOUNT_NOT_RENT_EXEMPT || status == BORSH_IO_ERROR)
|
{
|
||||||
{
|
// map originally missing error mappings to InvalidError
|
||||||
// map originally missing error mappings to InvalidError
|
InstructionError::InvalidError
|
||||||
InstructionError::InvalidError
|
} else {
|
||||||
} else {
|
status.into()
|
||||||
status.into()
|
};
|
||||||
};
|
stable_log::program_failure(&logger, program_id, &error);
|
||||||
stable_log::program_failure(&logger, program_id, &error);
|
Err(error)
|
||||||
return Err(error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
let error = match error {
|
let error = match error {
|
||||||
@ -983,14 +981,18 @@ impl Executor for BpfExecutor {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
stable_log::program_failure(&logger, program_id, &error);
|
stable_log::program_failure(&logger, program_id, &error);
|
||||||
return Err(error);
|
Err(error)
|
||||||
}
|
}
|
||||||
|
_ => Ok(()),
|
||||||
}
|
}
|
||||||
execute_time.stop();
|
};
|
||||||
}
|
execute_time.stop();
|
||||||
|
|
||||||
let mut deserialize_time = Measure::start("deserialize");
|
let mut deserialize_time = Measure::start("deserialize");
|
||||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
let execute_or_deserialize_result = execution_result.and_then(|_| {
|
||||||
deserialize_parameters(loader_id, keyed_accounts, parameter_bytes.as_slice())?;
|
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||||
|
deserialize_parameters(loader_id, keyed_accounts, parameter_bytes.as_slice())
|
||||||
|
});
|
||||||
deserialize_time.stop();
|
deserialize_time.stop();
|
||||||
invoke_context.update_timing(
|
invoke_context.update_timing(
|
||||||
serialize_time.as_us(),
|
serialize_time.as_us(),
|
||||||
@ -998,8 +1000,11 @@ impl Executor for BpfExecutor {
|
|||||||
execute_time.as_us(),
|
execute_time.as_us(),
|
||||||
deserialize_time.as_us(),
|
deserialize_time.as_us(),
|
||||||
);
|
);
|
||||||
stable_log::program_success(&logger, program_id);
|
|
||||||
Ok(())
|
if execute_or_deserialize_result.is_ok() {
|
||||||
|
stable_log::program_success(&logger, program_id);
|
||||||
|
}
|
||||||
|
execute_or_deserialize_result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user