Polkadot companion #6603: Use a BoundedVec in ValidationResult (#2161)

* Convert message `Vec`s into `BoundedVec`s

* cargo fmt

* Fix missing conversions in collator

* Fix the fix

* Fix the fix to the fix

* Fix tests

* Fix^4

* Avoid use of unwrap

* update lockfile for {"substrate", "polkadot"}

---------

Co-authored-by: parity-processbot <>
This commit is contained in:
Marcin S
2023-02-16 16:50:00 +01:00
committed by GitHub
parent 5d1083f597
commit 9691acacd4
4 changed files with 294 additions and 264 deletions
+259 -256
View File
File diff suppressed because it is too large Load Diff
+25 -2
View File
@@ -198,11 +198,34 @@ where
.ok() .ok()
.flatten()?; .flatten()?;
let upward_messages = collation_info
.upward_messages
.try_into()
.map_err(|e| {
tracing::error!(
target: LOG_TARGET,
error = ?e,
"Number of upward messages should not be greater than `MAX_UPWARD_MESSAGE_NUM`",
)
})
.ok()?;
let horizontal_messages = collation_info
.horizontal_messages
.try_into()
.map_err(|e| {
tracing::error!(
target: LOG_TARGET,
error = ?e,
"Number of horizontal messages should not be greater than `MAX_HORIZONTAL_MESSAGE_NUM`",
)
})
.ok()?;
Some(Collation { Some(Collation {
upward_messages: collation_info.upward_messages, upward_messages,
new_validation_code: collation_info.new_validation_code, new_validation_code: collation_info.new_validation_code,
processed_downward_messages: collation_info.processed_downward_messages, processed_downward_messages: collation_info.processed_downward_messages,
horizontal_messages: collation_info.horizontal_messages, horizontal_messages,
hrmp_watermark: collation_info.hrmp_watermark, hrmp_watermark: collation_info.hrmp_watermark,
head_data: collation_info.head_data, head_data: collation_info.head_data,
proof_of_validity: MaybeCompressedPoV::Compressed(pov), proof_of_validity: MaybeCompressedPoV::Compressed(pov),
+2 -2
View File
@@ -136,8 +136,8 @@ impl RelayChainInterface for DummyRelayChainInterface {
validation_code_hash: ValidationCodeHash::from(PHash::random()), validation_code_hash: ValidationCodeHash::from(PHash::random()),
}, },
commitments: CandidateCommitments { commitments: CandidateCommitments {
upward_messages: Vec::new(), upward_messages: Default::default(),
horizontal_messages: Vec::new(), horizontal_messages: Default::default(),
new_validation_code: None, new_validation_code: None,
head_data: HeadData(Vec::new()), head_data: HeadData(Vec::new()),
processed_downward_messages: 0, processed_downward_messages: 0,
@@ -26,14 +26,14 @@ use polkadot_parachain::primitives::{
HeadData, RelayChainBlockNumber, ValidationParams, ValidationResult, HeadData, RelayChainBlockNumber, ValidationParams, ValidationResult,
}; };
use codec::{Decode, Encode}; use codec::Encode;
use frame_support::traits::{ExecuteBlock, ExtrinsicCall, Get, IsSubType}; use frame_support::traits::{ExecuteBlock, ExtrinsicCall, Get, IsSubType};
use sp_core::storage::{ChildInfo, StateVersion}; use sp_core::storage::{ChildInfo, StateVersion};
use sp_externalities::{set_and_run_with_externalities, Externalities}; use sp_externalities::{set_and_run_with_externalities, Externalities};
use sp_io::KillStorageResult; use sp_io::KillStorageResult;
use sp_runtime::traits::{Block as BlockT, Extrinsic, HashFor, Header as HeaderT}; use sp_runtime::traits::{Block as BlockT, Extrinsic, HashFor, Header as HeaderT};
use sp_std::{mem, prelude::*}; use sp_std::prelude::*;
use sp_trie::MemoryDB; use sp_trie::MemoryDB;
type TrieBackend<B> = sp_state_machine::TrieBackend<MemoryDB<HashFor<B>>, HashFor<B>>; type TrieBackend<B> = sp_state_machine::TrieBackend<MemoryDB<HashFor<B>>, HashFor<B>>;
@@ -187,9 +187,13 @@ where
E::execute_block(block); E::execute_block(block);
let new_validation_code = crate::NewValidationCode::<PSC>::get(); let new_validation_code = crate::NewValidationCode::<PSC>::get();
let upward_messages = crate::UpwardMessages::<PSC>::get(); let upward_messages = crate::UpwardMessages::<PSC>::get().try_into().expect(
"Number of upward messages should not be greater than `MAX_UPWARD_MESSAGE_NUM`",
);
let processed_downward_messages = crate::ProcessedDownwardMessages::<PSC>::get(); let processed_downward_messages = crate::ProcessedDownwardMessages::<PSC>::get();
let horizontal_messages = crate::HrmpOutboundMessages::<PSC>::get(); let horizontal_messages = crate::HrmpOutboundMessages::<PSC>::get().try_into().expect(
"Number of horizontal messages should not be greater than `MAX_HORIZONTAL_MESSAGE_NUM`",
);
let hrmp_watermark = crate::HrmpWatermark::<PSC>::get(); let hrmp_watermark = crate::HrmpWatermark::<PSC>::get();
let head_data = let head_data =