diff --git a/polkadot/node/network/availability-recovery/src/lib.rs b/polkadot/node/network/availability-recovery/src/lib.rs index c6468952db..6af4e45a0e 100644 --- a/polkadot/node/network/availability-recovery/src/lib.rs +++ b/polkadot/node/network/availability-recovery/src/lib.rs @@ -662,6 +662,10 @@ async fn handle_network_update( } } } + protocol_v1::AvailabilityRecoveryMessage::RequestFullData(_, _) | + protocol_v1::AvailabilityRecoveryMessage::FullData(_, _) => { + // handled in https://github.com/paritytech/polkadot/pull/2453 + } } } // We do not really need to track the peers' views in this subsystem @@ -727,7 +731,7 @@ fn cleanup_awaited_chunks(state: &mut State) { let mut removed_tokens = Vec::new(); for (_, v) in state.discovering_validators.iter_mut() { - v.retain(|e| if !e.response.is_canceled() { + v.retain(|e| if e.response.is_canceled() { removed_tokens.push(e.token); false } else { diff --git a/polkadot/node/network/protocol/src/lib.rs b/polkadot/node/network/protocol/src/lib.rs index 2adbb8ef9e..62f9f2a1d3 100644 --- a/polkadot/node/network/protocol/src/lib.rs +++ b/polkadot/node/network/protocol/src/lib.rs @@ -242,7 +242,7 @@ impl View { pub mod v1 { use polkadot_primitives::v1::{ Hash, CollatorId, Id as ParaId, ErasureChunk, CandidateReceipt, - SignedAvailabilityBitfield, PoV, CandidateHash, ValidatorIndex, CandidateIndex, + SignedAvailabilityBitfield, PoV, CandidateHash, ValidatorIndex, CandidateIndex, AvailableData, }; use polkadot_node_primitives::{ SignedFullStatement, @@ -268,6 +268,11 @@ pub mod v1 { /// Respond with chunk for a given candidate hash and validator index. /// The response may be `None` if the requestee does not have the chunk. Chunk(RequestId, Option), + /// Request full data for a given candidate hash. + RequestFullData(RequestId, CandidateHash), + /// Respond with full data for a given candidate hash. + /// The response may be `None` if the requestee does not have the data. + FullData(RequestId, Option), } /// Network messages used by the bitfield distribution subsystem. diff --git a/polkadot/primitives/src/v1.rs b/polkadot/primitives/src/v1.rs index e96945642c..c3d171338b 100644 --- a/polkadot/primitives/src/v1.rs +++ b/polkadot/primitives/src/v1.rs @@ -598,7 +598,7 @@ pub enum CoreOccupied { /// This is the data we keep available for each candidate included in the relay chain. #[cfg(feature = "std")] -#[derive(Clone, Encode, Decode, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, PartialEq, Eq, Debug)] pub struct AvailableData { /// The Proof-of-Validation of the candidate. pub pov: std::sync::Arc,