mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 07:31:02 +00:00
Request based collation fetching (#2621)
* Introduce collation fetching protocol also move to mod.rs * Allow `PeerId`s in requests to network bridge. * Fix availability distribution tests. * Move CompressedPoV to primitives. * Request based collator protocol: validator side - Missing: tests - Collator side - don't connect, if not connected * Fixes. * Basic request based collator side. * Minor fix on collator side. * Don't connect in requests in collation protocol. Also some cleanup. * Fix PoV distribution * Bump substrate * Add back metrics + whitespace fixes. * Add back missing spans. * More cleanup. * Guide update. * Fix tests * Handle results in tests. * Fix weird compilation issue. * Add missing ) * Get rid of dead code. * Get rid of redundant import. * Fix runtime build. * Cleanup. * Fix wasm build. * Format fixes. Thanks @andronik !
This commit is contained in:
@@ -22,9 +22,7 @@
|
||||
#![deny(unused_crate_dependencies)]
|
||||
#![warn(missing_docs)]
|
||||
|
||||
use polkadot_primitives::v1::{
|
||||
Hash, PoV, CandidateDescriptor, ValidatorId, Id as ParaId, CoreIndex, CoreState,
|
||||
};
|
||||
use polkadot_primitives::v1::{CandidateDescriptor, CompressedPoV, CoreIndex, CoreState, Hash, Id as ParaId, PoV, ValidatorId};
|
||||
use polkadot_subsystem::{
|
||||
ActiveLeavesUpdate, OverseerSignal, SubsystemContext, SubsystemResult, SubsystemError, Subsystem,
|
||||
FromOverseer, SpawnedSubsystem,
|
||||
@@ -107,7 +105,7 @@ struct State {
|
||||
}
|
||||
|
||||
struct BlockBasedState {
|
||||
known: HashMap<Hash, (Arc<PoV>, protocol_v1::CompressedPoV)>,
|
||||
known: HashMap<Hash, (Arc<PoV>, CompressedPoV)>,
|
||||
|
||||
/// All the PoVs we are or were fetching, coupled with channels expecting the data.
|
||||
///
|
||||
@@ -135,7 +133,7 @@ fn awaiting_message(relay_parent: Hash, awaiting: Vec<Hash>)
|
||||
fn send_pov_message(
|
||||
relay_parent: Hash,
|
||||
pov_hash: Hash,
|
||||
pov: &protocol_v1::CompressedPoV,
|
||||
pov: &CompressedPoV,
|
||||
) -> protocol_v1::ValidationProtocol {
|
||||
protocol_v1::ValidationProtocol::PoVDistribution(
|
||||
protocol_v1::PoVDistributionMessage::SendPoV(relay_parent, pov_hash, pov.clone())
|
||||
@@ -274,7 +272,7 @@ async fn distribute_to_awaiting(
|
||||
metrics: &Metrics,
|
||||
relay_parent: Hash,
|
||||
pov_hash: Hash,
|
||||
pov: &protocol_v1::CompressedPoV,
|
||||
pov: &CompressedPoV,
|
||||
) {
|
||||
// Send to all peers who are awaiting the PoV and have that relay-parent in their view.
|
||||
//
|
||||
@@ -487,7 +485,7 @@ async fn handle_distribute(
|
||||
}
|
||||
}
|
||||
|
||||
let encoded_pov = match protocol_v1::CompressedPoV::compress(&*pov) {
|
||||
let encoded_pov = match CompressedPoV::compress(&*pov) {
|
||||
Ok(pov) => pov,
|
||||
Err(error) => {
|
||||
tracing::debug!(
|
||||
@@ -583,7 +581,7 @@ async fn handle_incoming_pov(
|
||||
peer: PeerId,
|
||||
relay_parent: Hash,
|
||||
pov_hash: Hash,
|
||||
encoded_pov: protocol_v1::CompressedPoV,
|
||||
encoded_pov: CompressedPoV,
|
||||
) {
|
||||
let relay_parent_state = match state.relay_parent_state.get_mut(&relay_parent) {
|
||||
None => {
|
||||
|
||||
@@ -24,10 +24,7 @@ use tracing::trace;
|
||||
|
||||
use sp_keyring::Sr25519Keyring;
|
||||
|
||||
use polkadot_primitives::v1::{
|
||||
AuthorityDiscoveryId, BlockData, CoreState, GroupRotationInfo, Id as ParaId,
|
||||
ScheduledCore, ValidatorIndex, SessionIndex, SessionInfo,
|
||||
};
|
||||
use polkadot_primitives::v1::{AuthorityDiscoveryId, BlockData, CoreState, GroupRotationInfo, Id as ParaId, ScheduledCore, SessionIndex, SessionInfo, ValidatorIndex};
|
||||
use polkadot_subsystem::{messages::{RuntimeApiMessage, RuntimeApiRequest}, jaeger};
|
||||
use polkadot_node_subsystem_test_helpers as test_helpers;
|
||||
use polkadot_node_subsystem_util::TimeoutExt;
|
||||
@@ -401,7 +398,7 @@ fn ask_validators_for_povs() {
|
||||
protocol_v1::PoVDistributionMessage::SendPoV(
|
||||
current,
|
||||
pov_hash,
|
||||
protocol_v1::CompressedPoV::compress(&pov_block).unwrap(),
|
||||
CompressedPoV::compress(&pov_block).unwrap(),
|
||||
),
|
||||
)
|
||||
)
|
||||
@@ -647,7 +644,7 @@ fn distributes_to_those_awaiting_and_completes_local() {
|
||||
assert_eq!(peers, vec![peer_a.clone()]);
|
||||
assert_eq!(
|
||||
message,
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
);
|
||||
}
|
||||
)
|
||||
@@ -960,7 +957,7 @@ fn peer_complete_fetch_and_is_rewarded() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_a.clone(),
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
@@ -969,7 +966,7 @@ fn peer_complete_fetch_and_is_rewarded() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_b.clone(),
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
@@ -1050,7 +1047,7 @@ fn peer_punished_for_sending_bad_pov() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_a.clone(),
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&bad_pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&bad_pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
@@ -1115,7 +1112,7 @@ fn peer_punished_for_sending_unexpected_pov() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_a.clone(),
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
@@ -1178,7 +1175,7 @@ fn peer_punished_for_sending_pov_out_of_our_view() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_a.clone(),
|
||||
send_pov_message(hash_b, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_b, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
@@ -1467,7 +1464,7 @@ fn peer_complete_fetch_leads_to_us_completing_others() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_a.clone(),
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
@@ -1491,7 +1488,7 @@ fn peer_complete_fetch_leads_to_us_completing_others() {
|
||||
assert_eq!(peers, vec![peer_b.clone()]);
|
||||
assert_eq!(
|
||||
message,
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
);
|
||||
}
|
||||
);
|
||||
@@ -1551,7 +1548,7 @@ fn peer_completing_request_no_longer_awaiting() {
|
||||
&mut ctx,
|
||||
NetworkBridgeEvent::PeerMessage(
|
||||
peer_a.clone(),
|
||||
send_pov_message(hash_a, pov_hash, &protocol_v1::CompressedPoV::compress(&pov).unwrap()),
|
||||
send_pov_message(hash_a, pov_hash, &CompressedPoV::compress(&pov).unwrap()),
|
||||
).focus().unwrap(),
|
||||
).await;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user