Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PVF execution priority #4837

Merged
merged 59 commits into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
ff40792
Add execution priority
AndreiEres Jun 19, 2024
fca9a11
Move priority to PendingExecutionRequest
AndreiEres Jun 19, 2024
7ec65f8
Update candidate validation
AndreiEres Jun 19, 2024
0d0926a
Add scheduling logic
AndreiEres Jun 20, 2024
f9bf225
Rename PreparePriority
AndreiEres Jun 20, 2024
fc7f27a
Set low priority for backing
AndreiEres Jun 20, 2024
9b8a5e9
Add additional option for disputes
AndreiEres Jun 25, 2024
610f0cc
Fix clippy
AndreiEres Jun 25, 2024
507113c
Fix types
AndreiEres Jun 25, 2024
3fbecab
Fix type
AndreiEres Jun 25, 2024
9192602
Update polkadot/node/core/pvf/src/priority.rs
AndreiEres Jun 26, 2024
bafb6c2
Update
AndreiEres Jun 26, 2024
0c1edcf
Update logic
AndreiEres Jul 10, 2024
7442c99
Fix
AndreiEres Jul 10, 2024
cb13533
Fix
AndreiEres Jul 10, 2024
4ec2e5e
Fix
AndreiEres Jul 11, 2024
b70c247
Assign system backing
AndreiEres Jul 17, 2024
2dfbffc
Replace probability with counter
AndreiEres Jul 18, 2024
7e40ef6
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Jul 19, 2024
98a4e64
Update iteration
AndreiEres Jul 19, 2024
5060a81
Update description
AndreiEres Jul 19, 2024
7e071f6
Add logging
AndreiEres Jul 19, 2024
34b6363
Update
AndreiEres Jul 22, 2024
531629d
Fix clippy warning
AndreiEres Jul 23, 2024
2b05b64
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Jul 23, 2024
c2e791c
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Jul 23, 2024
59b74bf
Update tests
AndreiEres Jul 23, 2024
b261cc5
Rename PreparePriority back
AndreiEres Jul 25, 2024
e7223fe
Fix docs
AndreiEres Jul 25, 2024
d3d55d6
Update logic and explanations
AndreiEres Jul 25, 2024
dc78fec
Update logic
AndreiEres Jul 25, 2024
a9e628c
Add metrics
AndreiEres Jul 25, 2024
25170af
Update nits
AndreiEres Jul 30, 2024
78279e8
Update tests
AndreiEres Jul 30, 2024
2b2fedf
Add debug
AndreiEres Jul 30, 2024
69a1043
Show how ordering works in a testcase
AndreiEres Jul 31, 2024
880b133
Add nits
AndreiEres Aug 7, 2024
cb7de40
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Aug 8, 2024
20bc090
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Aug 22, 2024
ebcfffe
Fix errors after conflicts resolving
AndreiEres Aug 22, 2024
602daaa
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Aug 26, 2024
afab63e
Fix errors after conflicts resolving
AndreiEres Aug 26, 2024
01f0659
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Sep 4, 2024
d9c118f
Fix imports
AndreiEres Sep 4, 2024
e456a5a
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Sep 13, 2024
1478b18
Address comments
AndreiEres Sep 20, 2024
df2ee37
Merge remote-tracking branch 'origin/master' into AndreiEres/pvf-exec…
AndreiEres Sep 20, 2024
0812542
Update lockfile
AndreiEres Sep 20, 2024
b979bb5
Add prdoc
AndreiEres Sep 20, 2024
54c2812
Update prdoc
AndreiEres Sep 20, 2024
6ce2f5a
Update prdoc
AndreiEres Sep 20, 2024
6924446
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Sep 23, 2024
7b577b5
Rename PvfExecPriority -> PvfExecKind
AndreiEres Oct 9, 2024
191dd44
Merge branch 'master' into AndreiEres/pvf-execution-priority
AndreiEres Oct 9, 2024
d630b34
Fix renaming
AndreiEres Oct 9, 2024
6964069
Rename execute_priority -> exec_kind
AndreiEres Oct 9, 2024
314aa19
Fix minimal-example
AndreiEres Oct 9, 2024
40dbd8e
Fix imports
AndreiEres Oct 9, 2024
9bec252
Fix format
AndreiEres Oct 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions polkadot/node/core/approval-voting/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ use polkadot_node_subsystem::{
ApprovalVotingMessage, AssignmentCheckError, AssignmentCheckResult,
AvailabilityRecoveryMessage, BlockDescription, CandidateValidationMessage, ChainApiMessage,
ChainSelectionMessage, DisputeCoordinatorMessage, HighestApprovedAncestorBlock,
RuntimeApiMessage, RuntimeApiRequest,
PvfExecPriority, RuntimeApiMessage, RuntimeApiRequest,
},
overseer, FromOrchestra, OverseerSignal, SpawnedSubsystem, SubsystemError, SubsystemResult,
SubsystemSender,
Expand All @@ -56,8 +56,8 @@ use polkadot_node_subsystem_util::{
use polkadot_primitives::{
ApprovalVoteMultipleCandidates, ApprovalVotingParams, BlockNumber, CandidateHash,
CandidateIndex, CandidateReceipt, CoreIndex, DisputeStatement, ExecutorParams, GroupIndex,
Hash, PvfExecKind, SessionIndex, SessionInfo, ValidDisputeStatementKind, ValidatorId,
ValidatorIndex, ValidatorPair, ValidatorSignature,
Hash, SessionIndex, SessionInfo, ValidDisputeStatementKind, ValidatorId, ValidatorIndex,
ValidatorPair, ValidatorSignature,
};
use sc_keystore::LocalKeystore;
use sp_application_crypto::Pair;
Expand Down Expand Up @@ -3529,7 +3529,7 @@ async fn launch_approval<Context>(
candidate_receipt: candidate.clone(),
pov: available_data.pov,
executor_params,
exec_kind: PvfExecKind::Approval,
exec_kind: PvfExecPriority::Approval,
response_sender: val_tx,
})
.await;
Expand Down
10 changes: 5 additions & 5 deletions polkadot/node/core/approval-voting/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3270,7 +3270,7 @@ async fn handle_double_assignment_import(
exec_kind,
response_sender,
..
}) if exec_kind == PvfExecKind::Approval => {
}) if exec_kind == PvfExecPriority::Approval => {
response_sender.send(Ok(ValidationResult::Valid(Default::default(), Default::default())))
.unwrap();
}
Expand Down Expand Up @@ -4210,7 +4210,7 @@ async fn handle_approval_on_max_coalesce_count(
for _ in &candidate_indices {
assert_matches!(
overseer_recv(virtual_overseer).await,
AllMessages::CandidateValidation(CandidateValidationMessage::ValidateFromExhaustive{exec_kind, response_sender, ..}) if exec_kind == PvfExecKind::Approval => {
AllMessages::CandidateValidation(CandidateValidationMessage::ValidateFromExhaustive{exec_kind, response_sender, ..}) if exec_kind == PvfExecPriority::Approval => {
response_sender.send(Ok(ValidationResult::Valid(Default::default(), Default::default())))
.unwrap();
}
Expand Down Expand Up @@ -4274,7 +4274,7 @@ async fn handle_approval_on_max_wait_time(
for _ in &candidate_indices {
assert_matches!(
overseer_recv(virtual_overseer).await,
AllMessages::CandidateValidation(CandidateValidationMessage::ValidateFromExhaustive{exec_kind, response_sender, ..}) if exec_kind == PvfExecKind::Approval => {
AllMessages::CandidateValidation(CandidateValidationMessage::ValidateFromExhaustive{exec_kind, response_sender, ..}) if exec_kind == PvfExecPriority::Approval => {
response_sender.send(Ok(ValidationResult::Valid(Default::default(), Default::default())))
.unwrap();
}
Expand Down Expand Up @@ -4777,7 +4777,7 @@ fn subsystem_relaunches_approval_work_on_restart() {
exec_kind,
response_sender,
..
}) if exec_kind == PvfExecKind::Approval => {
}) if exec_kind == PvfExecPriority::Approval => {
response_sender.send(Ok(ValidationResult::Valid(Default::default(), Default::default())))
.unwrap();
}
Expand Down Expand Up @@ -4897,7 +4897,7 @@ fn subsystem_sends_pending_approvals_on_approval_restart() {
exec_kind,
response_sender,
..
}) if exec_kind == PvfExecKind::Approval => {
}) if exec_kind == PvfExecPriority::Approval => {
response_sender.send(Ok(ValidationResult::Valid(Default::default(), Default::default())))
.unwrap();
}
Expand Down
1 change: 1 addition & 0 deletions polkadot/node/core/backing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ futures = { workspace = true }
sp-keystore = { workspace = true, default-features = true }
polkadot-primitives = { workspace = true, default-features = true }
polkadot-node-primitives = { workspace = true, default-features = true }
polkadot-parachain-primitives = { workspace = true, default-features = true }
polkadot-node-subsystem = { workspace = true, default-features = true }
polkadot-node-subsystem-util = { workspace = true, default-features = true }
polkadot-erasure-coding = { workspace = true, default-features = true }
Expand Down
17 changes: 12 additions & 5 deletions polkadot/node/core/backing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,9 @@ use polkadot_node_subsystem::{
AvailabilityDistributionMessage, AvailabilityStoreMessage, CanSecondRequest,
CandidateBackingMessage, CandidateValidationMessage, CollatorProtocolMessage,
HypotheticalCandidate, HypotheticalMembershipRequest, IntroduceSecondedCandidateRequest,
ProspectiveParachainsMessage, ProvisionableData, ProvisionerMessage, RuntimeApiMessage,
RuntimeApiRequest, StatementDistributionMessage, StoreAvailableDataError,
ProspectiveParachainsMessage, ProvisionableData, ProvisionerMessage, PvfExecPriority,
RuntimeApiMessage, RuntimeApiRequest, StatementDistributionMessage,
StoreAvailableDataError,
},
overseer, ActiveLeavesUpdate, FromOrchestra, OverseerSignal, SpawnedSubsystem, SubsystemError,
};
Expand All @@ -105,12 +106,13 @@ use polkadot_node_subsystem_util::{
vstaging::{fetch_claim_queue, ClaimQueueSnapshot},
Validator,
};
use polkadot_parachain_primitives::primitives::IsSystem;
use polkadot_primitives::{
node_features::FeatureIndex, BackedCandidate, CandidateCommitments, CandidateHash,
CandidateReceipt, CommittedCandidateReceipt, CoreIndex, CoreState, ExecutorParams, GroupIndex,
GroupRotationInfo, Hash, Id as ParaId, IndexedVec, NodeFeatures, PersistedValidationData,
PvfExecKind, SessionIndex, SigningContext, ValidationCode, ValidatorId, ValidatorIndex,
ValidatorSignature, ValidityAttestation,
SessionIndex, SigningContext, ValidationCode, ValidatorId, ValidatorIndex, ValidatorSignature,
ValidityAttestation,
};
use polkadot_statement_table::{
generic::AttestedCandidate as TableAttestedCandidate,
Expand Down Expand Up @@ -625,6 +627,7 @@ async fn request_candidate_validation(
executor_params: ExecutorParams,
) -> Result<ValidationResult, Error> {
let (tx, rx) = oneshot::channel();
let is_system = candidate_receipt.descriptor.para_id.is_system();

sender
.send_message(CandidateValidationMessage::ValidateFromExhaustive {
Expand All @@ -633,7 +636,11 @@ async fn request_candidate_validation(
candidate_receipt,
pov,
executor_params,
exec_kind: PvfExecKind::Backing,
exec_kind: if is_system {
PvfExecPriority::BackingSystemParas
} else {
PvfExecPriority::Backing
},
response_sender: tx,
})
.await;
Expand Down
22 changes: 11 additions & 11 deletions polkadot/node/core/backing/src/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ use polkadot_node_subsystem::{
use polkadot_node_subsystem_test_helpers as test_helpers;
use polkadot_primitives::{
node_features, CandidateDescriptor, GroupRotationInfo, HeadData, PersistedValidationData,
PvfExecKind, ScheduledCore, SessionIndex, LEGACY_MIN_BACKING_VOTES,
ScheduledCore, SessionIndex, LEGACY_MIN_BACKING_VOTES,
};
use polkadot_primitives_test_helpers::{
dummy_candidate_receipt_bad_sig, dummy_collator, dummy_collator_signature,
Expand Down Expand Up @@ -434,7 +434,7 @@ async fn assert_validate_from_exhaustive(
) if validation_data == *assert_pvd &&
validation_code == *assert_validation_code &&
*pov == *assert_pov && &candidate_receipt.descriptor == assert_candidate.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_receipt.commitments_hash == assert_candidate.commitments.hash() =>
{
response_sender.send(Ok(ValidationResult::Valid(
Expand Down Expand Up @@ -651,7 +651,7 @@ fn backing_works(#[case] elastic_scaling_mvp: bool) {
) if validation_data == pvd_ab &&
validation_code == validation_code_ab &&
*pov == pov_ab && &candidate_receipt.descriptor == candidate_a.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_receipt.commitments_hash == candidate_a_commitments_hash =>
{
response_sender.send(Ok(
Expand Down Expand Up @@ -1287,7 +1287,7 @@ fn backing_works_while_validation_ongoing() {
) if validation_data == pvd_abc &&
validation_code == validation_code_abc &&
*pov == pov_abc && &candidate_receipt.descriptor == candidate_a.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_a_commitments_hash == candidate_receipt.commitments_hash =>
{
// we never validate the candidate. our local node
Expand Down Expand Up @@ -1454,7 +1454,7 @@ fn backing_misbehavior_works() {
) if validation_data == pvd_a &&
validation_code == validation_code_a &&
*pov == pov_a && &candidate_receipt.descriptor == candidate_a.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_a_commitments_hash == candidate_receipt.commitments_hash =>
{
response_sender.send(Ok(
Expand Down Expand Up @@ -1621,7 +1621,7 @@ fn backing_dont_second_invalid() {
) if validation_data == pvd_a &&
validation_code == validation_code_a &&
*pov == pov_block_a && &candidate_receipt.descriptor == candidate_a.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_a.commitments.hash() == candidate_receipt.commitments_hash =>
{
response_sender.send(Ok(ValidationResult::Invalid(InvalidCandidate::BadReturn))).unwrap();
Expand Down Expand Up @@ -1661,7 +1661,7 @@ fn backing_dont_second_invalid() {
) if validation_data == pvd_b &&
validation_code == validation_code_b &&
*pov == pov_block_b && &candidate_receipt.descriptor == candidate_b.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_b.commitments.hash() == candidate_receipt.commitments_hash =>
{
response_sender.send(Ok(
Expand Down Expand Up @@ -1788,7 +1788,7 @@ fn backing_second_after_first_fails_works() {
) if validation_data == pvd_a &&
validation_code == validation_code_a &&
*pov == pov_a && &candidate_receipt.descriptor == candidate.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate.commitments.hash() == candidate_receipt.commitments_hash =>
{
response_sender.send(Ok(ValidationResult::Invalid(InvalidCandidate::BadReturn))).unwrap();
Expand Down Expand Up @@ -1932,7 +1932,7 @@ fn backing_works_after_failed_validation() {
) if validation_data == pvd_a &&
validation_code == validation_code_a &&
*pov == pov_a && &candidate_receipt.descriptor == candidate.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate.commitments.hash() == candidate_receipt.commitments_hash =>
{
response_sender.send(Err(ValidationFailed("Internal test error".into()))).unwrap();
Expand Down Expand Up @@ -2211,7 +2211,7 @@ fn retry_works() {
) if validation_data == pvd_a &&
validation_code == validation_code_a &&
*pov == pov_a && &candidate_receipt.descriptor == candidate.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate.commitments.hash() == candidate_receipt.commitments_hash
);
virtual_overseer
Expand Down Expand Up @@ -2753,7 +2753,7 @@ fn validator_ignores_statements_from_disabled_validators() {
) if validation_data == pvd &&
validation_code == expected_validation_code &&
*pov == expected_pov && &candidate_receipt.descriptor == candidate.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate_commitments_hash == candidate_receipt.commitments_hash =>
{
response_sender.send(Ok(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ async fn assert_validate_seconded_candidate(
&validation_code == assert_validation_code &&
&*pov == assert_pov &&
&candidate_receipt.descriptor == candidate.descriptor() &&
exec_kind == PvfExecKind::Backing &&
exec_kind == PvfExecPriority::BackingSystemParas &&
candidate.commitments.hash() == candidate_receipt.commitments_hash =>
{
response_sender.send(Ok(ValidationResult::Valid(
Expand Down
53 changes: 34 additions & 19 deletions polkadot/node/core/candidate-validation/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ use polkadot_node_primitives::{
use polkadot_node_subsystem::{
errors::RuntimeApiError,
messages::{
CandidateValidationMessage, PreCheckOutcome, RuntimeApiMessage, RuntimeApiRequest,
ValidationFailed,
CandidateValidationMessage, PreCheckOutcome, PvfExecPriority, RuntimeApiMessage,
RuntimeApiRequest, ValidationFailed,
},
overseer, FromOrchestra, OverseerSignal, SpawnedSubsystem, SubsystemError, SubsystemResult,
SubsystemSender,
Expand Down Expand Up @@ -793,7 +793,7 @@ async fn validate_from_chain_state<Sender>(
candidate_receipt: CandidateReceipt,
pov: Arc<PoV>,
executor_params: ExecutorParams,
exec_kind: PvfExecKind,
exec_kind: PvfExecPriority,
metrics: &Metrics,
) -> Result<ValidationResult, ValidationFailed>
where
Expand Down Expand Up @@ -849,7 +849,7 @@ async fn validate_candidate_exhaustive(
candidate_receipt: CandidateReceipt,
pov: Arc<PoV>,
executor_params: ExecutorParams,
exec_kind: PvfExecKind,
exec_kind: PvfExecPriority,
metrics: &Metrics,
) -> Result<ValidationResult, ValidationFailed> {
let _timer = metrics.time_validate_candidate_exhaustive();
Expand Down Expand Up @@ -911,9 +911,9 @@ async fn validate_candidate_exhaustive(
let result = match exec_kind {
// Retry is disabled to reduce the chance of nondeterministic blocks getting backed and
// honest backers getting slashed.
PvfExecKind::Backing => {
PvfExecPriority::Backing | PvfExecPriority::BackingSystemParas => {
let prep_timeout = pvf_prep_timeout(&executor_params, PvfPrepKind::Prepare);
let exec_timeout = pvf_exec_timeout(&executor_params, exec_kind);
let exec_timeout = pvf_exec_timeout(&executor_params, exec_kind.into());
let pvf = PvfPrepData::from_code(
raw_validation_code.to_vec(),
executor_params,
Expand All @@ -922,23 +922,19 @@ async fn validate_candidate_exhaustive(
);

validation_backend
.validate_candidate(
pvf,
exec_timeout,
params.encode(),
polkadot_node_core_pvf::Priority::Normal,
)
.validate_candidate(pvf, exec_timeout, params.encode(), exec_kind.into(), exec_kind)
.await
},
PvfExecKind::Approval =>
PvfExecPriority::Approval | PvfExecPriority::Dispute =>
validation_backend
.validate_candidate_with_retry(
raw_validation_code.to_vec(),
pvf_exec_timeout(&executor_params, exec_kind),
pvf_exec_timeout(&executor_params, exec_kind.into()),
params,
executor_params,
PVF_APPROVAL_EXECUTION_RETRY_DELAY,
polkadot_node_core_pvf::Priority::Critical,
exec_kind.into(),
exec_kind,
)
.await,
};
Expand Down Expand Up @@ -1023,6 +1019,8 @@ trait ValidationBackend {
encoded_params: Vec<u8>,
// The priority for the preparation job.
prepare_priority: polkadot_node_core_pvf::Priority,
// The priority for the execution job.
execute_priority: PvfExecPriority,
) -> Result<WasmValidationResult, ValidationError>;

/// Tries executing a PVF. Will retry once if an error is encountered that may have
Expand All @@ -1042,6 +1040,8 @@ trait ValidationBackend {
retry_delay: Duration,
// The priority for the preparation job.
prepare_priority: polkadot_node_core_pvf::Priority,
// The priority for the preparation job.
AndreiEres marked this conversation as resolved.
Show resolved Hide resolved
execute_priority: PvfExecPriority,
) -> Result<WasmValidationResult, ValidationError> {
let prep_timeout = pvf_prep_timeout(&executor_params, PvfPrepKind::Prepare);
// Construct the PVF a single time, since it is an expensive operation. Cloning it is cheap.
Expand All @@ -1057,7 +1057,13 @@ trait ValidationBackend {

// Use `Priority::Critical` as finality trumps parachain liveliness.
let mut validation_result = self
.validate_candidate(pvf.clone(), exec_timeout, params.encode(), prepare_priority)
.validate_candidate(
pvf.clone(),
exec_timeout,
params.encode(),
prepare_priority,
execute_priority,
)
.await;
if validation_result.is_ok() {
return validation_result
Expand Down Expand Up @@ -1133,7 +1139,13 @@ trait ValidationBackend {
// Encode the params again when re-trying. We expect the retry case to be relatively
// rare, and we want to avoid unconditionally cloning data.
validation_result = self
.validate_candidate(pvf.clone(), new_timeout, params.encode(), prepare_priority)
.validate_candidate(
pvf.clone(),
new_timeout,
params.encode(),
prepare_priority,
execute_priority,
)
.await;
}
}
Expand All @@ -1156,10 +1168,13 @@ impl ValidationBackend for ValidationHost {
encoded_params: Vec<u8>,
// The priority for the preparation job.
prepare_priority: polkadot_node_core_pvf::Priority,
// The priority for the execution job.
execute_priority: PvfExecPriority,
) -> Result<WasmValidationResult, ValidationError> {
let (tx, rx) = oneshot::channel();
if let Err(err) =
self.execute_pvf(pvf, exec_timeout, encoded_params, prepare_priority, tx).await
if let Err(err) = self
.execute_pvf(pvf, exec_timeout, encoded_params, prepare_priority, execute_priority, tx)
.await
{
return Err(InternalValidationError::HostCommunication(format!(
"cannot send pvf to the validation host, it might have shut down: {:?}",
Expand Down
Loading
Loading