Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Open

Debug #7628

Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
559a46c
inclusion emulator logic for asynchronous backing (#4790)
rphmeier Feb 21, 2022
ba0def5
Merge branch 'rh-async-backing-feature' of https://github.com/parityt…
rphmeier Feb 25, 2022
37735ee
Runtime changes for Asynchronous Backing (#4786)
rphmeier Mar 2, 2022
1fdd683
Merge branch 'master' into rh-async-backing-feature
rphmeier Mar 7, 2022
6261133
Merge branch 'rh-async-backing-feature' of https://github.com/parityt…
rphmeier Mar 7, 2022
e398a9b
Merge branch 'master' into rh-async-backing-feature
rphmeier Mar 9, 2022
b265c4b
Merge branch 'master' into rh-async-backing-feature
rphmeier Apr 5, 2022
ce23bf7
Merge branch 'master' into rh-async-backing-feature
rphmeier Apr 20, 2022
569242a
Merge branch 'master' into rh-async-backing-feature
rphmeier Apr 27, 2022
3cdda45
Merge branch 'master' into rh-async-backing-feature
rphmeier May 18, 2022
c1fbdee
Prospective Parachains Subsystem (#4913)
rphmeier May 18, 2022
36268ec
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Jun 22, 2022
88be445
Integrate prospective parachains subsystem into backing: Part 1 (#5557)
rphmeier Jul 10, 2022
2c9296d
Track occupied depth in backing per parachain (#5778)
slumber Jul 13, 2022
d63ecc8
provisioner: async backing changes (#5711)
slumber Sep 6, 2022
de0fc3e
Merge branch 'master' into rh-async-backing-feature
rphmeier Sep 6, 2022
c61b949
provisioner: async backing changes (#5711)
slumber Sep 6, 2022
db5e798
Merge remote-tracking branch 'upstream/rh-async-backing-feature' into…
rphmeier Sep 6, 2022
aa5b9bf
fmt
rphmeier Sep 6, 2022
25b9f7e
Network bridge changes for asynchronous backing + update subsystems t…
rphmeier Sep 12, 2022
2c215b2
remove max_pov_size requirement from prospective pvd request (#6014)
rphmeier Sep 15, 2022
4b913e7
Extract legacy statement distribution to its own module (#6026)
rphmeier Sep 23, 2022
e17bffb
Merge branch 'master' into rh-async-backing-feature
eskimor Sep 23, 2022
82ff991
Version 3 is already live.
eskimor Sep 26, 2022
614ee8c
Fix tests (#6055)
eskimor Sep 28, 2022
1bde1f7
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Oct 7, 2022
04de8e5
fmt
slumber Oct 7, 2022
ca5e2fe
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Oct 12, 2022
c23032a
collator-protocol: asynchronous backing changes (#5740)
slumber Oct 12, 2022
e3dff2f
Merge branch 'master' into rh-async-backing-feature
rphmeier Oct 13, 2022
6138103
Merge branch 'rh-async-backing-feature' of https://github.com/parityt…
rphmeier Oct 13, 2022
604cfc4
validator assignment fixes for backing and collator protocol (#6158)
slumber Oct 19, 2022
41e2f4d
Refactor prospective parachains mode request (#6179)
slumber Oct 24, 2022
fd1569a
backing: don't send backed candidate to provisioner (#6185)
slumber Oct 25, 2022
0f3ef99
backing: introduce `CanSecond` request for advertisements filtering (…
slumber Nov 3, 2022
21e1932
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Nov 9, 2022
55f3633
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Nov 13, 2022
f062f3c
cargo generate-lockfile
slumber Nov 13, 2022
8b1eb15
Implement `StagingValidityConstraints` Runtime API method (#6258)
slumber Nov 13, 2022
aacb2b3
Merge branch 'master' into rh-async-backing-feature
slumber Nov 28, 2022
c41cbbe
Prepare the Runtime for asynchronous backing upgrade (#6287)
slumber Nov 30, 2022
9f27a2f
Use real prospective parachains subsystem (#6407)
mrcnski Dec 8, 2022
17e945c
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Jan 12, 2023
d9847aa
Merge branch 'master' into rh-async-backing-feature
rphmeier Jan 18, 2023
32759c5
Merge branch 'master' into rh-async-backing-feature
rphmeier Jan 19, 2023
cb193fb
Backport `HypotheticalFrontier` into the feature branch (#6605)
slumber Jan 24, 2023
fbd5999
Resolve todo about legacy leaf activation (#6447)
mrcnski Jan 24, 2023
d7cca3f
fix bug/warning in handling membership answers
rphmeier Jan 25, 2023
7dde6d7
Remove `HypotheticalDepthRequest` in favor of `HypotheticalFrontierRe…
mrcnski Jan 27, 2023
c760b76
Async Backing: Send Statement Distribution "Backed" messages (#6634)
mrcnski Jan 27, 2023
3ae0f24
Fix compile error
mrcnski Jan 28, 2023
d2e6081
Fix some clippy errors
mrcnski Jan 29, 2023
11556a6
Add prospective parachains subsystem tests (#6454)
mrcnski Jan 30, 2023
1c59180
Node-side metrics for asynchronous backing (#6549)
mrcnski Jan 30, 2023
8ce4057
Fix `check_depth_query` test
mrcnski Jan 30, 2023
9153998
inclusion-emulator: mirror advancement rule check (#6361)
slumber Jan 31, 2023
b858af1
prospective-parachains: introduce `backed_in_path_only` flag for adve…
slumber Jan 31, 2023
300e301
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Feb 16, 2023
381862b
fmt
slumber Feb 16, 2023
7f19196
Merge branch 'master' into rh-async-backing-feature
rphmeier Feb 22, 2023
c752c6c
Add async-backing zombienet tests (#6314)
bredamatt Mar 1, 2023
797b32f
Async backing: impl guide for statement distribution (#6738)
mrcnski Mar 1, 2023
8c45c2e
Asynchronous backing statement distribution: Take III (#5999)
rphmeier Mar 3, 2023
2b1f1c7
miscellaneous fixes to make asynchronous backing work (#6791)
rphmeier Mar 8, 2023
ab476ca
Merge branch 'master' into rh-async-backing-feature
rphmeier Mar 8, 2023
626805d
Merge branch 'rh-async-backing-feature' of https://github.com/parityt…
rphmeier Mar 8, 2023
5e53c38
Remove restart from test (#6840)
bredamatt Mar 8, 2023
6d7f78a
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Mar 9, 2023
cf5f666
Async Backing: Statement Distribution Tests (#6755)
mrcnski Mar 10, 2023
6dfbd20
Fix some clippy lints in tests
mrcnski Mar 15, 2023
c9552b7
Async backing: minor fixes (#6920)
mrcnski Mar 21, 2023
2945ba2
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Mar 21, 2023
49ca776
bitfield-distribution test
slumber Mar 21, 2023
e03fb90
implicit view tests
slumber Mar 21, 2023
1e06eb8
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Mar 23, 2023
caa60ba
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Mar 28, 2023
2259262
Refactor parameters -> params
slumber Mar 28, 2023
a9a06aa
scheduler: update storage migration (#6963)
slumber Apr 10, 2023
664d6b2
Statement Distribution Guide Edits (#7025)
BradleyOlson64 Apr 10, 2023
ed9420b
Add attested candidate request retry timeouts (#6833)
mrcnski Apr 12, 2023
631b66d
Async backing: add Prospective Parachains impl guide (#6933)
mrcnski Apr 13, 2023
cdc8c18
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Apr 19, 2023
aee4ba9
Updates to Provisioner Guide for Async Backing (#7106)
BradleyOlson64 May 1, 2023
5b8a0ad
Merge branch 'master' of https://github.com/paritytech/polkadot into …
BradleyOlson64 May 1, 2023
5ad5706
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber May 24, 2023
baf1365
fmt
slumber May 24, 2023
5c53e31
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber May 25, 2023
137668d
Renaming Parathread Mentions (#7287)
BradleyOlson64 Jun 2, 2023
b2e3cf2
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Jun 27, 2023
2b6ea67
fix bitfield distribution test
slumber Jun 27, 2023
789eadf
approval distribution tests
slumber Jun 27, 2023
b7b2748
fix bridge tests
slumber Jun 27, 2023
8737dc6
Merge branch 'rh-async-backing-feature' into rh-async-backing-feature…
rphmeier Jul 3, 2023
ba1b67f
Merge branch 'master' into rh-async-backing-feature-while-frozen
rphmeier Jul 3, 2023
c4b7412
update Cargo.lock
rphmeier Jul 3, 2023
f74d85a
Merge remote-tracking branch 'origin/master' into rh-async-backing-fe…
slumber Jul 5, 2023
5fb7ffb
[async-backing-branch] Optimize collator-protocol validator-side requ…
alindima Jul 10, 2023
89f600d
Update collation generation for asynchronous backing (#7405)
rphmeier Jul 10, 2023
cdcff53
Merge branch 'master' into rh-async-backing-feature
rphmeier Jul 10, 2023
9426a27
Merge branch 'master' into rh-async-backing-feature
rphmeier Jul 13, 2023
5207e17
fix some more fallout from merge
rphmeier Jul 13, 2023
6e3efdb
fmt
rphmeier Jul 13, 2023
c2f3daa
remove staging APIs from Rococo & Westend (#7513)
rphmeier Jul 18, 2023
2933d34
send network messages on main protocol name (#7515)
rphmeier Jul 19, 2023
d3f0fe6
misc async backing improvements for allowed ancestry blocks (#7532)
slumber Jul 21, 2023
9f91005
Merge branch 'master' into rh-async-backing-feature
rphmeier Jul 21, 2023
a16c843
provisioner: request candidate receipt by relay parent (#7527)
slumber Jul 21, 2023
5a45ecd
Merge branch 'master' into rh-async-backing-feature
rphmeier Jul 26, 2023
637f0c5
Merge branch 'rh-async-backing-feature' of https://github.com/parityt…
rphmeier Jul 26, 2023
f2aa3b3
revert to old `handle_new_activations` logic in some cases (#7514)
rphmeier Jul 28, 2023
5625f42
Omnibus asynchronous backing bugfix PR (#7529)
rphmeier Jul 28, 2023
21fec9d
Merge branch 'master' into rh-async-backing-feature
rphmeier Jul 28, 2023
bd6b87d
fix zombienet tests (#7614)
sandreim Aug 14, 2023
6214bfb
Merge branch 'master' into rh-async-backing-feature
rphmeier Aug 14, 2023
eb4ae4e
fix runtime compilation
rphmeier Aug 14, 2023
876fc04
make bitfield distribution tests compile
rphmeier Aug 14, 2023
ebe28f8
attempt to fix zombienet disputes (#7618)
rphmeier Aug 15, 2023
09b653b
Merge branch 'master' into rh-async-backing-feature
rphmeier Aug 15, 2023
5115d95
fmt
rphmeier Aug 15, 2023
54017e1
Debug
bkchr Aug 15, 2023
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
Prev Previous commit
Next Next commit
backing: introduce CanSecond request for advertisements filtering (#…
…6225)

* Drop BoundToRelayParent

* draft changes

* fix backing tests

* Fix genesis ancestry

* Fix validator side tests

* more tests
  • Loading branch information
slumber authored Nov 3, 2022
commit 0f3ef99e0277832aa8967d6ac552fd28c2cb7535
89 changes: 68 additions & 21 deletions node/core/backing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ use polkadot_node_primitives::{
};
use polkadot_node_subsystem::{
messages::{
AvailabilityDistributionMessage, AvailabilityStoreMessage, CandidateBackingMessage,
CandidateValidationMessage, CollatorProtocolMessage, HypotheticalDepthRequest,
ProspectiveParachainsMessage, ProvisionableData, ProvisionerMessage, RuntimeApiMessage,
RuntimeApiRequest, StatementDistributionMessage,
AvailabilityDistributionMessage, AvailabilityStoreMessage, CanSecondRequest,
CandidateBackingMessage, CandidateValidationMessage, CollatorProtocolMessage,
HypotheticalDepthRequest, ProspectiveParachainsMessage, ProvisionableData,
ProvisionerMessage, RuntimeApiMessage, RuntimeApiRequest, StatementDistributionMessage,
},
overseer, ActiveLeavesUpdate, FromOrchestra, OverseerSignal, SpawnedSubsystem, SubsystemError,
};
Expand Down Expand Up @@ -758,6 +758,8 @@ async fn handle_communication<Context>(
"Received `GetBackedCandidates` for an unknown relay parent."
);
},
CandidateBackingMessage::CanSecond(request, tx) =>
handle_can_second_request(ctx, state, request, tx).await,
}

Ok(())
Expand Down Expand Up @@ -1093,22 +1095,8 @@ async fn seconding_sanity_check<Context>(
candidate_hash: CandidateHash,
candidate_para: ParaId,
parent_head_data_hash: Hash,
head_data_hash: Hash,
candidate_relay_parent: Hash,
) -> SecondingAllowed {
// Note that `GetHypotheticalDepths` doesn't account for recursion,
// i.e. candidates can appear at multiple depths in the tree and in fact
// at all depths, and we don't know what depths a candidate will ultimately occupy
// because that's dependent on other candidates we haven't yet received.
//
// The only way to effectively rule this out is to have candidate receipts
// directly commit to the parachain block number or some other incrementing
// counter. That requires a major primitives format upgrade, so for now
// we just rule out trivial cycles.
if parent_head_data_hash == head_data_hash {
return SecondingAllowed::No
}

let mut membership = Vec::new();
let mut responses = FuturesOrdered::<BoxFuture<'_, Result<_, oneshot::Canceled>>>::new();

Expand Down Expand Up @@ -1193,6 +1181,46 @@ async fn seconding_sanity_check<Context>(
SecondingAllowed::Yes(membership)
}

/// Performs seconding sanity check for an advertisement.
#[overseer::contextbounds(CandidateBacking, prefix = self::overseer)]
async fn handle_can_second_request<Context>(
ctx: &mut Context,
state: &State,
request: CanSecondRequest,
tx: oneshot::Sender<bool>,
) {
let relay_parent = request.candidate_relay_parent;
let response = if state
.per_relay_parent
.get(&relay_parent)
.map_or(false, |pr_state| pr_state.prospective_parachains_mode.is_enabled())
{
let result = seconding_sanity_check(
ctx,
&state.per_leaf,
&state.implicit_view,
request.candidate_hash,
request.candidate_para_id,
request.parent_head_data_hash,
relay_parent,
)
.await;

match result {
SecondingAllowed::No => false,
SecondingAllowed::Yes(membership) => {
// Candidate should be recognized by at least some fragment tree.
membership.iter().any(|(_, m)| !m.is_empty())
},
}
} else {
// Relay parent is unknown or async backing is disabled.
false
};

let _ = tx.send(response);
}

#[overseer::contextbounds(CandidateBacking, prefix = self::overseer)]
async fn handle_validated_candidate_command<Context>(
ctx: &mut Context,
Expand All @@ -1219,6 +1247,19 @@ async fn handle_validated_candidate_command<Context>(
return Ok(())
}

let parent_head_data_hash = persisted_validation_data.parent_head.hash();
// Note that `GetHypotheticalDepths` doesn't account for recursion,
// i.e. candidates can appear at multiple depths in the tree and in fact
// at all depths, and we don't know what depths a candidate will ultimately occupy
// because that's dependent on other candidates we haven't yet received.
//
// The only way to effectively rule this out is to have candidate receipts
// directly commit to the parachain block number or some other incrementing
// counter. That requires a major primitives format upgrade, so for now
// we just rule out trivial cycles.
if parent_head_data_hash == commitments.head_data.hash() {
return Ok(())
}
// sanity check that we're allowed to second the candidate
// and that it doesn't conflict with other candidates we've
// seconded.
Expand All @@ -1229,7 +1270,6 @@ async fn handle_validated_candidate_command<Context>(
candidate_hash,
candidate.descriptor().para_id,
persisted_validation_data.parent_head.hash(),
commitments.head_data.hash(),
candidate.descriptor().relay_parent,
)
.await
Expand Down Expand Up @@ -1517,14 +1557,21 @@ async fn import_statement<Context>(
"Candidate backed",
);

// Inform the prospective parachains subsystem
// that the candidate is now backed.
if rp_state.prospective_parachains_mode.is_enabled() {
// Inform the prospective parachains subsystem
// that the candidate is now backed.
ctx.send_message(ProspectiveParachainsMessage::CandidateBacked(
para_id,
candidate_hash,
))
.await;
// Backed candidate potentially unblocks new advertisements,
// notify collator protocol.
ctx.send_message(CollatorProtocolMessage::Backed {
para_id,
para_head: backed.candidate.descriptor.para_head,
})
.await;
} else {
// The provisioner waits on candidate-backing, which means
// that we need to send unbounded messages to avoid cycles.
Expand Down
2 changes: 1 addition & 1 deletion node/core/backing/src/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ impl TestCandidateBuilder {
erasure_root: self.erasure_root,
collator: dummy_collator(),
signature: dummy_collator_signature(),
para_head: dummy_hash(),
para_head: self.head_data.hash(),
validation_code_hash: ValidationCode(self.validation_code).hash(),
persisted_validation_data_hash: self.persisted_validation_data_hash,
},
Expand Down
11 changes: 10 additions & 1 deletion node/core/backing/src/tests/prospective_parachains.rs
Original file line number Diff line number Diff line change
Expand Up @@ -959,6 +959,7 @@ fn backing_works() {
.build();

let candidate_a_hash = candidate_a.hash();
let candidate_a_para_head = candidate_a.descriptor().para_head;

let public1 = CryptoStore::sr25519_generate_new(
&*test_state.keystore,
Expand Down Expand Up @@ -1034,7 +1035,7 @@ fn backing_works() {
)
.await;

// Prospective parachains are notified about candidate backed.
// Prospective parachains and collator protocol are notified about candidate backed.
assert_matches!(
virtual_overseer.recv().await,
AllMessages::ProspectiveParachains(
Expand All @@ -1043,6 +1044,13 @@ fn backing_works() {
),
) if candidate_a_hash == candidate_hash && candidate_para_id == para_id
);
assert_matches!(
virtual_overseer.recv().await,
AllMessages::CollatorProtocol(CollatorProtocolMessage::Backed {
para_id: _para_id,
para_head,
}) if para_id == _para_id && candidate_a_para_head == para_head
);

assert_matches!(
virtual_overseer.recv().await,
Expand Down Expand Up @@ -1255,6 +1263,7 @@ fn concurrent_dependent_candidates() {
AllMessages::ProspectiveParachains(
ProspectiveParachainsMessage::CandidateBacked(..),
) => {},
AllMessages::CollatorProtocol(CollatorProtocolMessage::Backed { .. }) => {},
AllMessages::StatementDistribution(StatementDistributionMessage::Share(
_,
statement,
Expand Down
14 changes: 7 additions & 7 deletions node/network/collator-protocol/src/collator_side/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -789,12 +789,6 @@ async fn process_msg<Context>(
},
}
},
ReportCollator(_) => {
gum::warn!(
target: LOG_TARGET,
"ReportCollator message is not expected on the collator side of the protocol",
);
},
NetworkBridgeUpdate(event) => {
// We should count only this shoulder in the histogram, as other shoulders are just introducing noise
let _ = state.metrics.time_process_msg();
Expand All @@ -807,7 +801,13 @@ async fn process_msg<Context>(
);
}
},
_ => {},
msg @ (ReportCollator(..) | Invalid(..) | Seconded(..) | Backed { .. }) => {
gum::warn!(
target: LOG_TARGET,
"{:?} message is not expected on the collator side of the protocol",
msg,
);
},
}

Ok(())
Expand Down
15 changes: 15 additions & 0 deletions node/network/collator-protocol/src/validator_side/collation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,21 @@ impl PendingCollation {
}
}

/// vstaging advertisement that was rejected by the backing
/// subsystem. Validator may fetch it later if its fragment
/// membership gets recognized before relay parent goes out of view.
#[derive(Debug, Clone)]
pub struct BlockedAdvertisement {
/// Peer that advertised the collation.
pub peer_id: PeerId,
/// Collator id.
pub collator_id: CollatorId,
/// The relay-parent of the candidate.
pub candidate_relay_parent: Hash,
/// Hash of the candidate.
pub candidate_hash: CandidateHash,
}

/// Performs a sanity check between advertised and fetched collations.
///
/// Since the persisted validation data is constructed using the advertised
Expand Down
Loading