mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 07:37:57 +00:00
Refactor PVF preparation memory stats (#6693)
* Refactor PVF preparation memory stats The original purpose of this change was to gate metrics that are unsupported by some systems behind conditional compilation directives (#[cfg]); see https://github.com/paritytech/polkadot/pull/6675#discussion_r1099996209. Then I started doing some random cleanups and simplifications and got a bit carried away. 🙈 The code should be overall tidier than before. Changes: - Don't register unsupported metrics (e.g. `max_rss` on non-Linux systems) - Introduce `PrepareStats` struct as an abstraction over the `Ok` values of `PrepareResult`. It is cleaner, and can be easily modified in the future. - Other small changes * Minor fixes to comments * Fix compile errors * Try to fix some Linux errors * Mep * Fix candidate-validation tests * Update docstring
This commit is contained in:
@@ -24,7 +24,8 @@
|
||||
#![warn(missing_docs)]
|
||||
|
||||
use polkadot_node_core_pvf::{
|
||||
InvalidCandidate as WasmInvalidCandidate, PrepareError, Pvf, ValidationError, ValidationHost,
|
||||
InvalidCandidate as WasmInvalidCandidate, PrepareError, PrepareStats, Pvf, ValidationError,
|
||||
ValidationHost,
|
||||
};
|
||||
use polkadot_node_primitives::{
|
||||
BlockData, InvalidCandidate, PoV, ValidationResult, POV_BOMB_LIMIT, VALIDATION_CODE_BOMB_LIMIT,
|
||||
@@ -654,7 +655,7 @@ trait ValidationBackend {
|
||||
validation_result
|
||||
}
|
||||
|
||||
async fn precheck_pvf(&mut self, pvf: Pvf) -> Result<Duration, PrepareError>;
|
||||
async fn precheck_pvf(&mut self, pvf: Pvf) -> Result<PrepareStats, PrepareError>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
@@ -680,7 +681,7 @@ impl ValidationBackend for ValidationHost {
|
||||
.map_err(|_| ValidationError::InternalError("validation was cancelled".into()))?
|
||||
}
|
||||
|
||||
async fn precheck_pvf(&mut self, pvf: Pvf) -> Result<Duration, PrepareError> {
|
||||
async fn precheck_pvf(&mut self, pvf: Pvf) -> Result<PrepareStats, PrepareError> {
|
||||
let (tx, rx) = oneshot::channel();
|
||||
if let Err(err) = self.precheck_pvf(pvf, tx).await {
|
||||
// Return an IO error if there was an error communicating with the host.
|
||||
|
||||
@@ -377,7 +377,7 @@ impl ValidationBackend for MockValidateCandidateBackend {
|
||||
result
|
||||
}
|
||||
|
||||
async fn precheck_pvf(&mut self, _pvf: Pvf) -> Result<Duration, PrepareError> {
|
||||
async fn precheck_pvf(&mut self, _pvf: Pvf) -> Result<PrepareStats, PrepareError> {
|
||||
unreachable!()
|
||||
}
|
||||
}
|
||||
@@ -894,11 +894,11 @@ fn pov_decompression_failure_is_invalid() {
|
||||
}
|
||||
|
||||
struct MockPreCheckBackend {
|
||||
result: Result<Duration, PrepareError>,
|
||||
result: Result<PrepareStats, PrepareError>,
|
||||
}
|
||||
|
||||
impl MockPreCheckBackend {
|
||||
fn with_hardcoded_result(result: Result<Duration, PrepareError>) -> Self {
|
||||
fn with_hardcoded_result(result: Result<PrepareStats, PrepareError>) -> Self {
|
||||
Self { result }
|
||||
}
|
||||
}
|
||||
@@ -914,7 +914,7 @@ impl ValidationBackend for MockPreCheckBackend {
|
||||
unreachable!()
|
||||
}
|
||||
|
||||
async fn precheck_pvf(&mut self, _pvf: Pvf) -> Result<Duration, PrepareError> {
|
||||
async fn precheck_pvf(&mut self, _pvf: Pvf) -> Result<PrepareStats, PrepareError> {
|
||||
self.result.clone()
|
||||
}
|
||||
}
|
||||
@@ -931,7 +931,7 @@ fn precheck_works() {
|
||||
|
||||
let (check_fut, check_result) = precheck_pvf(
|
||||
ctx.sender(),
|
||||
MockPreCheckBackend::with_hardcoded_result(Ok(Duration::default())),
|
||||
MockPreCheckBackend::with_hardcoded_result(Ok(PrepareStats::default())),
|
||||
relay_parent,
|
||||
validation_code_hash,
|
||||
)
|
||||
@@ -977,7 +977,7 @@ fn precheck_invalid_pvf_blob_compression() {
|
||||
|
||||
let (check_fut, check_result) = precheck_pvf(
|
||||
ctx.sender(),
|
||||
MockPreCheckBackend::with_hardcoded_result(Ok(Duration::default())),
|
||||
MockPreCheckBackend::with_hardcoded_result(Ok(PrepareStats::default())),
|
||||
relay_parent,
|
||||
validation_code_hash,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user