mirror of
https://github.com/fluencelabs/aquavm
synced 2025-04-24 14:52:15 +00:00
fix(performance): avoiding particle data printout in errors
This commit is contained in:
parent
755456871a
commit
6c1cb289cc
@ -21,7 +21,6 @@ use air_interpreter_data::CidStoreVerificationError;
|
|||||||
use air_interpreter_data::DataDeserializationError;
|
use air_interpreter_data::DataDeserializationError;
|
||||||
use air_interpreter_data::Versions;
|
use air_interpreter_data::Versions;
|
||||||
use air_interpreter_interface::CallResultsDeserializeError;
|
use air_interpreter_interface::CallResultsDeserializeError;
|
||||||
use air_interpreter_interface::SerializedCallResults;
|
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
use strum_macros::EnumDiscriminants;
|
use strum_macros::EnumDiscriminants;
|
||||||
use strum_macros::EnumIter;
|
use strum_macros::EnumIter;
|
||||||
@ -38,58 +37,40 @@ pub enum PreparationError {
|
|||||||
/// Errors occurred on executed trace deserialization.
|
/// Errors occurred on executed trace deserialization.
|
||||||
#[error(
|
#[error(
|
||||||
"an error occurred while data deserialization: {error:?}.\n\
|
"an error occurred while data deserialization: {error:?}.\n\
|
||||||
AquaVM version is {} and it expect data of {} version,\
|
AquaVM version is {} and it expects {} version.",
|
||||||
it's failed to get version of AquaVM produced this data.\n\
|
|
||||||
Data: {raw_data:?}",
|
|
||||||
super::interpreter_version(),
|
super::interpreter_version(),
|
||||||
data_version()
|
data_version()
|
||||||
)]
|
)]
|
||||||
DataDeFailed {
|
DataDeFailed { error: DataDeserializationError },
|
||||||
raw_data: Vec<u8>,
|
|
||||||
error: DataDeserializationError,
|
|
||||||
},
|
|
||||||
|
|
||||||
/// Errors occurred on executed trace deserialization.
|
/// Errors occurred on executed trace deserialization.
|
||||||
#[error(
|
#[error(
|
||||||
"an error occurred while envelope deserialization: {error:?}.\n\
|
"an error occurred while envelope deserialization: {error:?}.\n\
|
||||||
AquaVM version is {} and it expect data of {} version,\
|
AquaVM version is {} and it expects {} version.",
|
||||||
it's failed to get version of AquaVM produced this data.\n\
|
|
||||||
Envelope data: {env_raw_data:?}",
|
|
||||||
super::interpreter_version(),
|
super::interpreter_version(),
|
||||||
data_version()
|
data_version()
|
||||||
)]
|
)]
|
||||||
EnvelopeDeFailed {
|
EnvelopeDeFailed { error: DataDeserializationError },
|
||||||
env_raw_data: Vec<u8>,
|
|
||||||
error: DataDeserializationError,
|
|
||||||
},
|
|
||||||
|
|
||||||
/// Errors occurred on executed trace deserialization
|
/// Errors occurred on executed trace deserialization
|
||||||
/// when it was possible to recover versions.
|
/// when it was possible to recover versions.
|
||||||
#[error(
|
#[error(
|
||||||
"an error occurred while data deserialization: {error:?}.\n\
|
"an error occurred while data deserialization: {error:?}.\n\
|
||||||
AquaVM's version is {} and it expects data of {} version.\n\
|
AquaVM's version is {} and it expects data of {} version.\n\
|
||||||
Supplied data version is {}, it's produced by AquaVM of {} version.\n\
|
Supplied data version is {}, it's produced by AquaVM of {} version.",
|
||||||
Envelope data: {env_raw_data:?}",
|
|
||||||
super::interpreter_version(),
|
super::interpreter_version(),
|
||||||
data_version(),
|
data_version(),
|
||||||
versions.data_version,
|
versions.data_version,
|
||||||
versions.interpreter_version,
|
versions.interpreter_version,
|
||||||
)]
|
)]
|
||||||
EnvelopeDeFailedWithVersions {
|
EnvelopeDeFailedWithVersions {
|
||||||
env_raw_data: Vec<u8>,
|
|
||||||
error: DataDeserializationError,
|
error: DataDeserializationError,
|
||||||
versions: Versions,
|
versions: Versions,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Error occurred on call results deserialization.
|
/// Error occurred on call results deserialization.
|
||||||
#[error(
|
#[error("error occurred while deserialize call results: {error:?}.")]
|
||||||
"error occurred while deserialize call results: {error:?}.\n\
|
CallResultsDeFailed { error: CallResultsDeserializeError },
|
||||||
Call results: {call_results:?}"
|
|
||||||
)]
|
|
||||||
CallResultsDeFailed {
|
|
||||||
call_results: SerializedCallResults,
|
|
||||||
error: CallResultsDeserializeError,
|
|
||||||
},
|
|
||||||
|
|
||||||
/// Error occurred when a version of interpreter produced supplied data is less then minimal.
|
/// Error occurred when a version of interpreter produced supplied data is less then minimal.
|
||||||
#[error("supplied data was produced by `{actual_version}` version of interpreter, but minimum `{required_version}` version is required")]
|
#[error("supplied data was produced by `{actual_version}` version of interpreter, but minimum `{required_version}` version is required")]
|
||||||
@ -119,28 +100,20 @@ impl ToErrorCode for PreparationError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl PreparationError {
|
impl PreparationError {
|
||||||
pub fn data_de_failed(raw_data: Vec<u8>, error: DataDeserializationError) -> Self {
|
pub fn data_de_failed(error: DataDeserializationError) -> Self {
|
||||||
Self::DataDeFailed { raw_data, error }
|
Self::DataDeFailed { error }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn envelope_de_failed(env_raw_data: Vec<u8>, error: DataDeserializationError) -> Self {
|
pub fn envelope_de_failed(error: DataDeserializationError) -> Self {
|
||||||
Self::EnvelopeDeFailed { env_raw_data, error }
|
Self::EnvelopeDeFailed { error }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn env_de_failed_with_versions(
|
pub fn env_de_failed_with_versions(error: DataDeserializationError, versions: Versions) -> Self {
|
||||||
env_raw_data: Vec<u8>,
|
Self::EnvelopeDeFailedWithVersions { error, versions }
|
||||||
error: DataDeserializationError,
|
|
||||||
versions: Versions,
|
|
||||||
) -> Self {
|
|
||||||
Self::EnvelopeDeFailedWithVersions {
|
|
||||||
env_raw_data,
|
|
||||||
error,
|
|
||||||
versions,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn call_results_de_failed(call_results: SerializedCallResults, error: CallResultsDeserializeError) -> Self {
|
pub fn call_results_de_failed(error: CallResultsDeserializeError) -> Self {
|
||||||
Self::CallResultsDeFailed { call_results, error }
|
Self::CallResultsDeFailed { error }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unsupported_interpreter_version(actual_version: semver::Version, required_version: semver::Version) -> Self {
|
pub fn unsupported_interpreter_version(actual_version: semver::Version, required_version: semver::Version) -> Self {
|
||||||
|
@ -122,18 +122,18 @@ pub(crate) fn try_to_envelope(raw_env_data: &[u8]) -> PreparationResult<Interpre
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn try_to_data(raw_data: &[u8]) -> PreparationResult<InterpreterData> {
|
pub(crate) fn try_to_data(raw_data: &[u8]) -> PreparationResult<InterpreterData> {
|
||||||
InterpreterData::try_from_slice(raw_data).map_err(|de_error| to_data_de_error(raw_data.to_vec(), de_error))
|
InterpreterData::try_from_slice(raw_data).map_err(to_data_de_error)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_envelope_de_error(env_raw_data: Vec<u8>, de_error: DataDeserializationError) -> PreparationError {
|
fn to_envelope_de_error(env_raw_data: Vec<u8>, de_error: DataDeserializationError) -> PreparationError {
|
||||||
match InterpreterDataEnvelope::try_get_versions(&env_raw_data) {
|
match InterpreterDataEnvelope::try_get_versions(&env_raw_data) {
|
||||||
Ok(versions) => PreparationError::env_de_failed_with_versions(env_raw_data, de_error, versions),
|
Ok(versions) => PreparationError::env_de_failed_with_versions(de_error, versions),
|
||||||
Err(_) => PreparationError::envelope_de_failed(env_raw_data, de_error),
|
Err(_) => PreparationError::envelope_de_failed(de_error),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_data_de_error(env_raw_data: Vec<u8>, de_error: DataDeserializationError) -> PreparationError {
|
fn to_data_de_error(de_error: DataDeserializationError) -> PreparationError {
|
||||||
PreparationError::data_de_failed(env_raw_data, de_error)
|
PreparationError::data_de_failed(de_error)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tracing::instrument(skip_all)]
|
#[tracing::instrument(skip_all)]
|
||||||
@ -147,7 +147,7 @@ fn make_exec_ctx(
|
|||||||
let call_results = measure!(
|
let call_results = measure!(
|
||||||
CallResultsRepr
|
CallResultsRepr
|
||||||
.deserialize(call_results)
|
.deserialize(call_results)
|
||||||
.map_err(|e| PreparationError::call_results_de_failed(call_results.clone(), e))?,
|
.map_err(PreparationError::call_results_de_failed)?,
|
||||||
tracing::Level::INFO,
|
tracing::Level::INFO,
|
||||||
"CallResultsRepr.deserialize",
|
"CallResultsRepr.deserialize",
|
||||||
);
|
);
|
||||||
|
@ -46,7 +46,6 @@ fn invalid_data_without_versions() {
|
|||||||
|
|
||||||
let expected_serde_error = InterpreterDataEnvelope::try_from_slice(&invalid_data).unwrap_err();
|
let expected_serde_error = InterpreterDataEnvelope::try_from_slice(&invalid_data).unwrap_err();
|
||||||
let expected_error = PreparationError::EnvelopeDeFailed {
|
let expected_error = PreparationError::EnvelopeDeFailed {
|
||||||
env_raw_data: invalid_data,
|
|
||||||
error: expected_serde_error,
|
error: expected_serde_error,
|
||||||
};
|
};
|
||||||
assert!(check_error(&result, expected_error));
|
assert!(check_error(&result, expected_error));
|
||||||
@ -79,7 +78,6 @@ fn invalid_data_with_versions() {
|
|||||||
|
|
||||||
let expected_serde_error = InterpreterDataEnvelope::try_from_slice(&invalid_data).unwrap_err();
|
let expected_serde_error = InterpreterDataEnvelope::try_from_slice(&invalid_data).unwrap_err();
|
||||||
let expected_error = PreparationError::EnvelopeDeFailedWithVersions {
|
let expected_error = PreparationError::EnvelopeDeFailedWithVersions {
|
||||||
env_raw_data: invalid_data,
|
|
||||||
error: expected_serde_error,
|
error: expected_serde_error,
|
||||||
versions,
|
versions,
|
||||||
};
|
};
|
||||||
@ -114,7 +112,6 @@ fn invalid_callresults() {
|
|||||||
let expected_serde_error = CallResultsRepr.deserialize(&wrong_call_results).unwrap_err();
|
let expected_serde_error = CallResultsRepr.deserialize(&wrong_call_results).unwrap_err();
|
||||||
let expected_error = PreparationError::CallResultsDeFailed {
|
let expected_error = PreparationError::CallResultsDeFailed {
|
||||||
error: expected_serde_error,
|
error: expected_serde_error,
|
||||||
call_results: wrong_call_results.into(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
assert!(check_error(&result, expected_error));
|
assert!(check_error(&result, expected_error));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user