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

Add on demand assignment provider pallet #7110

Merged
merged 206 commits into from
Aug 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
b8a8f60
Address some PR comments
Apr 14, 2023
ff069cf
minor
Apr 14, 2023
2da640c
more cleanup
Apr 14, 2023
cea245e
find_map and timeout availability fixes
Apr 17, 2023
5dc97d6
Change default scheduling_lookahead to 1
Apr 17, 2023
b284c86
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Apr 17, 2023
80b6db1
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Apr 19, 2023
f2e865f
Add on demand assignment provider pallet
antonva Mar 23, 2023
f026685
Move test-runtime to new assignment provider
antonva Apr 20, 2023
5dec26d
Run cargo format on scheduler tests
antonva Apr 20, 2023
d92b709
minor
Apr 20, 2023
126ca58
Mutate cores in single loop
Apr 24, 2023
d4a7915
timeout predicate simplification
Apr 24, 2023
7309626
claimqueue desired size fix
Apr 24, 2023
ab8fa44
Replace expect by ok_or
Apr 24, 2023
275024b
More improvements
Apr 24, 2023
9455762
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Apr 25, 2023
08cf9ef
Fix push back order and next_up_on_timeout
Apr 25, 2023
f5329e4
minor
Apr 25, 2023
082bd50
session change docs
Apr 26, 2023
005c2c4
Add pre_new_session call to hand pre session updates
Apr 26, 2023
75bcb97
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 2, 2023
d357c7b
Remove sc_network dependency and PeerId from unnecessary data structures
May 2, 2023
02197bd
Remove unnecessary peer_ids
May 2, 2023
8e42cf8
Add OnDemandOrdering proxy (#7156)
May 2, 2023
0be2985
Check PeerId in collator protocol before fetching collation
May 3, 2023
5212fd2
On occupied, remove non occupied cores from the claimqueue front and …
May 4, 2023
034ef58
Add missing docs
May 4, 2023
17443de
Comment out unused field
May 4, 2023
da20249
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 4, 2023
79a8b64
fix ScheduledCore in tests
May 4, 2023
2a54b4f
Fix the fix
May 4, 2023
5e9d026
pebkac
May 4, 2023
752bcd5
fmt
May 4, 2023
730e7d8
Fix occupied dropping
May 4, 2023
3ee1bd1
Remove double import
May 4, 2023
8a29c6f
ScheduledCore fixes
May 4, 2023
fa414a2
Readd sc-network dep
May 4, 2023
2523363
pebkac
May 4, 2023
c81c5a0
OpaquePeerId -> PeerId in can_collate interface
May 4, 2023
0be56f0
Cargo.lock update for interface change
May 4, 2023
d7346fd
Remove checks not needed anymore?
May 4, 2023
69b7346
Drop occupied core on session change if it would time out after the n…
May 5, 2023
214d94b
Add on demand assignment provider pallet
antonva Mar 23, 2023
141e1ba
Move test-runtime to new assignment provider
antonva Apr 20, 2023
94237fb
Run cargo format on scheduler tests
antonva Apr 20, 2023
eb1c3f6
Add OnDemandOrdering proxy (#7156)
May 2, 2023
cc54ce3
Remove unneeded config values
antonva Apr 27, 2023
04f8906
Update comments
antonva Apr 28, 2023
7454073
Use and_then for queue position
antonva Apr 28, 2023
6190ae9
Return the max size of the spot queue on error
antonva May 8, 2023
acfa793
Add comments to add_parathread_entry
antonva May 8, 2023
96ebd0d
Add module comments
antonva May 9, 2023
b8b2f20
Merge remote-tracking branch 'origin/alex/parathreads_review' into an…
antonva May 9, 2023
8d13126
Add log for when can_collate fails
May 9, 2023
8684ba8
Change assigner queue type to `Assignment`
antonva May 9, 2023
473a42b
Merge remote-tracking branch 'origin/antonva/ondemand-pallet' into an…
antonva May 9, 2023
12db684
Update assignment provider tests
antonva May 9, 2023
4bfc0d1
More logs
May 9, 2023
1ce0691
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 9, 2023
5de5bb4
Remove unused keyring import
antonva May 9, 2023
b436955
disable can_collate
May 9, 2023
dc39972
comment out can_collate
May 9, 2023
e689f2a
Can collate first checks set if empty
May 10, 2023
296c396
Move can_collate call to collation advertisement
May 10, 2023
36c489b
Fix backing test
May 10, 2023
d6063bb
Merge remote-tracking branch 'origin/alex/parathreads_review' into an…
antonva May 10, 2023
be3d534
map to loop
May 10, 2023
b6690d3
Remove obsolete check
May 11, 2023
137c053
Move invalid collation test from backing to collator-protocol
May 12, 2023
3405d67
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 12, 2023
1a5d3bb
fix unused imports
May 12, 2023
2c1e0fb
fix test
May 15, 2023
b3c72e6
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 16, 2023
29ab916
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 17, 2023
49f0c7b
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 19, 2023
f79568d
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 24, 2023
1066ae9
fix Debug derivation
May 24, 2023
1dfeae3
Increase time limit on zombienet predicates
May 24, 2023
1020495
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 25, 2023
3010f90
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 25, 2023
526a285
Increase zombienet timeout
May 26, 2023
add1587
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 26, 2023
17e28c2
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 29, 2023
fcde801
Merge branch 'ag_av_parathreads' into alex/parathreads_review
May 30, 2023
d70f419
Minor
May 31, 2023
a0f4db1
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Jun 1, 2023
adae499
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Jun 2, 2023
06a1ccb
Address some PR comments
Jun 5, 2023
be4f525
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Jun 5, 2023
7541c1f
Address PR comments
Jun 5, 2023
a82e5b5
Comment out failing assert due to on-demand assigner missing
Jun 5, 2023
4305e7e
Merge branch 'ag_av_parathreads' into alex/parathreads_review
Jun 6, 2023
edf45fd
remove collator_restrictions info from backing
Jun 6, 2023
9c943a9
Move can_collate to ActiveParas
Jun 8, 2023
07eba34
minor
Jun 8, 2023
2695cc4
minor
Jun 8, 2023
8799308
Update weight information for on demand config
antonva Jun 6, 2023
27415cb
Merge remote-tracking branch 'origin/ag_av_parathreads' into antonva/…
antonva Jun 8, 2023
4f88719
Add ttl to parasentry
antonva Jun 8, 2023
4ed74d4
Fix tests missing parasentry ttl
antonva Jun 8, 2023
451b355
Adjust scheduler tests to use ttl default values
antonva Jun 8, 2023
c320dc1
Use match instead of if let for ttl drop
antonva Jun 8, 2023
9ef62d3
Use RuntimeDebug trait for `ParasEntry` fields
antonva Jun 12, 2023
72dd137
Add comments to on demand assignment pallet
antonva Jun 12, 2023
0cb00fb
Fix spot traffic calculation
antonva Jun 12, 2023
8e982f4
Revert runtimedebug changes to primitives
antonva Jun 13, 2023
fb973c7
Remove runtimedebug derivation from `ParasEntry`
antonva Jun 13, 2023
54adfe5
Mention affinity in pallet level docs
antonva Jun 13, 2023
a1e9e1a
Use RuntimeDebug trait for ParasEntry child types
antonva Jun 13, 2023
3d3c5be
Remove collator restrictions
antonva Jun 15, 2023
96c1607
Merge branch 'ag_av_parathreads' into alex/parathreads_review
antonva Jun 20, 2023
e8aaf3c
Fix primitive versioning and other merge issues
antonva Jun 20, 2023
130156f
Fix tests post merge
antonva Jun 20, 2023
5464c61
Fix node side tests
antonva Jun 20, 2023
5f69276
Edit parascheduler migration for clarity
antonva Jun 21, 2023
e2b2d35
Move parascheduler migration up to next release
antonva Jun 21, 2023
9d0ea06
Merge branch 'alex/parathreads_review' into antonva/ondemand-pallet
antonva Jun 21, 2023
2f291ad
Merge branch 'master' into antonva/ondemand-pallet
antonva Jun 21, 2023
7b220d8
Remove vestiges from merge
antonva Jun 21, 2023
4c72f6d
Fix tests
antonva Jun 21, 2023
028c674
Merge branch 'master' into antonva/ondemand-pallet
antonva Jun 22, 2023
28cbc1a
Refactor ttl handling
antonva Jun 22, 2023
5965855
Remove unused things from scheduler tests
antonva Jun 22, 2023
a565cfa
Move on demand assigner to own directory
antonva Jun 22, 2023
f990351
Update documentation
antonva Jun 24, 2023
3d96f56
Merge branch 'master' into antonva/ondemand-pallet
antonva Jun 24, 2023
ea68d64
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Jun 24, 2023
bc98aaf
Remove unused sc-network dependency in primitives
antonva Jun 24, 2023
f8a3e8c
Remove unused import
antonva Jun 24, 2023
da853c4
Reenable scheduler test
antonva Jun 24, 2023
7a67edc
Remove unused storage value
antonva Jun 25, 2023
9aeea7c
Enable timeout predicate test and fix fn
antonva Jun 26, 2023
ef9b525
Remove unused imports
antonva Jun 26, 2023
4e195d3
Add benchmarking entry for perbill in config
antonva Jun 26, 2023
40f1ee9
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Jun 26, 2023
25e7f4c
Correct typo
antonva Jun 26, 2023
c4000d7
Address review comments
antonva Jun 29, 2023
9c898da
Log out errors when calculating spot traffic.
antonva Jun 29, 2023
822eb72
Change parascheduler's log target name
antonva Jun 29, 2023
8e6018d
Update scheduler_common documentation
antonva Jun 29, 2023
8d670aa
Use mutate for affinity fns, add tests
antonva Jun 29, 2023
4947792
Add another on demand affinity test
antonva Jul 3, 2023
5e019f7
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Jul 3, 2023
cebacab
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
tdimitrov Jul 5, 2023
0900de3
Unify parathreads and parachains in HostConfig (take 2) (#7452)
tdimitrov Jul 13, 2023
f9c732b
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Jul 17, 2023
7920c38
Fix branch after merge with master
antonva Jul 19, 2023
810b994
Refactor out duplicate checks into a helper fn
antonva Jul 19, 2023
246e9ff
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Jul 19, 2023
1c03ee3
Fix tests post merge
antonva Jul 19, 2023
82f46af
Rename add_parathread_assignment, add test
antonva Jul 21, 2023
6e3137e
Update docs
antonva Jul 21, 2023
b7b867d
Remove unused on_finalize function
antonva Jul 21, 2023
175f3e9
Add weight info to on demand pallet
antonva Jul 21, 2023
49276a9
Update runtime/parachains/src/configuration.rs
antonva Jul 21, 2023
d11d18b
Update runtime/parachains/src/scheduler_common/mod.rs
antonva Jul 26, 2023
b09ee38
Update runtime/parachains/src/assigner_on_demand/mod.rs
antonva Jul 27, 2023
1b14309
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Aug 2, 2023
f1cd7e0
Add benchmarking to on demand pallet
antonva Jul 26, 2023
bf48013
Make place_order test check for success
antonva Jul 26, 2023
c9afe50
Add on demand benchmarks
antonva Jul 28, 2023
69a3df5
Add local test weights to rococo runtime
antonva Jul 31, 2023
6026e97
Modify TTL drop behaviour to not skip claims
antonva Jul 31, 2023
4376ff2
Refactor ttl test to test claimqueue order
antonva Aug 2, 2023
04d5403
Disable place_order ext. when no on_demand cores
antonva Aug 2, 2023
07b149f
Use default genesis config for benchmark tests
antonva Aug 2, 2023
22232e9
Refactor config builder param
antonva Aug 2, 2023
46bdf19
Move lifecycle test from scheduler to on demand
antonva Aug 3, 2023
e6c3ac1
Remove unneeded lifecycle test
antonva Aug 3, 2023
cae0378
Re enable validator shuffle test
antonva Aug 3, 2023
2b00545
More realistic weights for place_order
Aug 4, 2023
b296cd2
Merge branch 'antonva/ondemand-pallet' of https://github.com/parityte…
Aug 4, 2023
e555359
Remove redundant import
Aug 4, 2023
de992bb
Fix backwards compatibility (hopefully)
Aug 4, 2023
25f478d
".git/.scripts/commands/bench/bench.sh" --subcommand=runtime --runtim…
Aug 4, 2023
69e0b68
Fix tests.
Aug 4, 2023
26205a4
Merge branch 'antonva/ondemand-pallet' of https://github.com/parityte…
Aug 4, 2023
99430fb
Fix off-by-one.
Aug 7, 2023
b11aab0
Re enable claimqueue fills test
antonva Aug 4, 2023
385526b
Re enable schedule_rotates_groups test
antonva Aug 8, 2023
754a08c
Fix fill_claimqueue_fills test
antonva Aug 8, 2023
22aefe6
Re enable next_up_on_timeout test, move fn
antonva Aug 8, 2023
5c1d885
Do not pop from assignment provider when retrying
antonva Aug 8, 2023
ddcb01b
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Aug 8, 2023
f1a5c7f
Fix tests missing collator in scheduledcore
antonva Aug 8, 2023
733ac0a
Add comment about timeout predicate.
Aug 8, 2023
5c92da7
Rename parasentry retries to availability timeouts
antonva Aug 10, 2023
77aef2c
Re enable schedule_schedules... test
antonva Aug 10, 2023
c601273
Refactor prune retried test to new scheduler
antonva Aug 10, 2023
5b823cc
Have all scheduler tests use genesis_cfg fn
antonva Aug 10, 2023
2187fe5
Update docs
antonva Aug 10, 2023
5a23341
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Aug 10, 2023
8f4efd0
Update copyright notices on new files
antonva Aug 11, 2023
133359f
Rename is_parachain_core to is_bulk_core
antonva Aug 11, 2023
d7110c3
Remove erroneous TODO
antonva Aug 11, 2023
b7f8b9a
Simplify import
antonva Aug 11, 2023
de041e1
".git/.scripts/commands/bench/bench.sh" --subcommand=runtime --runtim…
Aug 11, 2023
6d39963
Revert AdvertiseCollation order shuffle
antonva Aug 11, 2023
19e2c3a
Refactor place_order into keepalive and allowdeath
antonva Aug 11, 2023
3fc7503
Revert rename of hrmp max inbound channels
antonva Aug 11, 2023
94a680d
Restore availability_timeout_predicate function
antonva Aug 11, 2023
8e1789f
Merge branch 'ag_av_parathreads' into antonva/ondemand-pallet
antonva Aug 11, 2023
5893591
Clean up leftover comments
antonva Aug 11, 2023
37e47b1
Update runtime/parachains/src/scheduler/tests.rs
antonva Aug 11, 2023
fdb86dd
".git/.scripts/commands/bench/bench.sh" --subcommand=runtime --runtim…
Aug 11, 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
42 changes: 6 additions & 36 deletions node/core/backing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ use polkadot_node_subsystem_util::{
request_validators, Validator,
};
use polkadot_primitives::{
BackedCandidate, CandidateCommitments, CandidateHash, CandidateReceipt, CollatorId,
BackedCandidate, CandidateCommitments, CandidateHash, CandidateReceipt,
CommittedCandidateReceipt, CoreIndex, CoreState, Hash, Id as ParaId, PvfExecTimeoutKind,
SigningContext, ValidatorId, ValidatorIndex, ValidatorSignature, ValidityAttestation,
};
Expand Down Expand Up @@ -354,7 +354,7 @@ async fn handle_active_leaves_update<Context>(
let group_index = group_rotation_info.group_for_core(core_index, n_cores);
if let Some(g) = validator_groups.get(group_index.0 as usize) {
if validator.as_ref().map_or(false, |v| g.contains(&v.index())) {
assignment = Some((scheduled.para_id, scheduled.collator));
assignment = Some(scheduled.para_id);
}
groups.insert(scheduled.para_id, g.clone());
}
Expand All @@ -363,15 +363,15 @@ async fn handle_active_leaves_update<Context>(

let table_context = TableContext { groups, validators, validator };

let (assignment, required_collator) = match assignment {
let assignment = match assignment {
None => {
assignments_span.add_string_tag("assigned", "false");
(None, None)
None
},
Some((assignment, required_collator)) => {
Some(assignment) => {
assignments_span.add_string_tag("assigned", "true");
assignments_span.add_para_id(assignment);
(Some(assignment), required_collator)
Some(assignment)
},
};

Expand All @@ -381,7 +381,6 @@ async fn handle_active_leaves_update<Context>(
let job = CandidateBackingJob {
parent,
assignment,
required_collator,
issued_statements: HashSet::new(),
awaiting_validation: HashSet::new(),
fallbacks: HashMap::new(),
Expand Down Expand Up @@ -412,8 +411,6 @@ struct CandidateBackingJob<Context> {
parent: Hash,
/// The `ParaId` assigned to this validator
assignment: Option<ParaId>,
/// The collator required to author the candidate, if any.
required_collator: Option<CollatorId>,
/// Spans for all candidates that are not yet backable.
unbacked_candidates: HashMap<CandidateHash, jaeger::Span>,
/// We issued `Seconded`, `Valid` or `Invalid` statements on about these candidates.
Expand Down Expand Up @@ -911,21 +908,6 @@ impl<Context> CandidateBackingJob<Context> {
candidate: &CandidateReceipt,
pov: Arc<PoV>,
) -> Result<(), Error> {
// Check that candidate is collated by the right collator.
if self
.required_collator
.as_ref()
.map_or(false, |c| c != &candidate.descriptor().collator)
{
// Break cycle - bounded as there is only one candidate to
// second per block.
ctx.send_unbounded_message(CollatorProtocolMessage::Invalid(
self.parent,
candidate.clone(),
));
return Ok(())
}

let candidate_hash = candidate.hash();
let mut span = self.get_unbacked_validation_child(
root_span,
Expand Down Expand Up @@ -1169,25 +1151,13 @@ impl<Context> CandidateBackingJob<Context> {
return Ok(())
}

let descriptor = attesting.candidate.descriptor().clone();

gum::debug!(
target: LOG_TARGET,
candidate_hash = ?candidate_hash,
candidate_receipt = ?attesting.candidate,
"Kicking off validation",
);

// Check that candidate is collated by the right collator.
if self.required_collator.as_ref().map_or(false, |c| c != &descriptor.collator) {
// If not, we've got the statement in the table but we will
// not issue validation work for it.
//
// Act as though we've issued a statement.
self.issued_statements.insert(candidate_hash);
return Ok(())
}

let bg_sender = ctx.sender().clone();
let pov = PoVData::FetchFromValidator {
from_validator: attesting.from_validator,
Expand Down
69 changes: 5 additions & 64 deletions node/core/backing/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ use polkadot_node_subsystem::{
};
use polkadot_node_subsystem_test_helpers as test_helpers;
use polkadot_primitives::{
CandidateDescriptor, CollatorId, GroupRotationInfo, HeadData, PersistedValidationData,
PvfExecTimeoutKind, ScheduledCore,
CandidateDescriptor, GroupRotationInfo, HeadData, PersistedValidationData, PvfExecTimeoutKind,
ScheduledCore,
};
use sp_application_crypto::AppCrypto;
use sp_keyring::Sr25519Keyring;
Expand Down Expand Up @@ -97,14 +97,10 @@ impl Default for TestState {
let group_rotation_info =
GroupRotationInfo { session_start_block: 0, group_rotation_frequency: 100, now: 1 };

let thread_collator: CollatorId = Sr25519Keyring::Two.public().into();
let availability_cores = vec![
CoreState::Scheduled(ScheduledCore { para_id: chain_a, collator: None }),
CoreState::Scheduled(ScheduledCore { para_id: chain_b, collator: None }),
CoreState::Scheduled(ScheduledCore {
para_id: thread_a,
collator: Some(thread_collator.clone()),
}),
CoreState::Scheduled(ScheduledCore { para_id: thread_a, collator: None }),
];

let mut head_data = HashMap::new();
Expand Down Expand Up @@ -1190,66 +1186,11 @@ fn backing_works_after_failed_validation() {
});
}

// Test that a `CandidateBackingMessage::Second` issues validation work
// and in case validation is successful issues a `StatementDistributionMessage`.
#[test]
fn backing_doesnt_second_wrong_collator() {
let mut test_state = TestState::default();
test_state.availability_cores[0] = CoreState::Scheduled(ScheduledCore {
para_id: ParaId::from(1),
collator: Some(Sr25519Keyring::Bob.public().into()),
});

test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move {
test_startup(&mut virtual_overseer, &test_state).await;

let pov = PoV { block_data: BlockData(vec![42, 43, 44]) };

let expected_head_data = test_state.head_data.get(&test_state.chain_ids[0]).unwrap();

let pov_hash = pov.hash();
let candidate = TestCandidateBuilder {
para_id: test_state.chain_ids[0],
relay_parent: test_state.relay_parent,
pov_hash,
head_data: expected_head_data.clone(),
erasure_root: make_erasure_root(&test_state, pov.clone()),
..Default::default()
}
.build();

let second = CandidateBackingMessage::Second(
test_state.relay_parent,
candidate.to_plain(),
pov.clone(),
);

virtual_overseer.send(FromOrchestra::Communication { msg: second }).await;

assert_matches!(
virtual_overseer.recv().await,
AllMessages::CollatorProtocol(
CollatorProtocolMessage::Invalid(parent, c)
) if parent == test_state.relay_parent && c == candidate.to_plain() => {
}
);

virtual_overseer
.send(FromOrchestra::Signal(OverseerSignal::ActiveLeaves(
ActiveLeavesUpdate::stop_work(test_state.relay_parent),
)))
.await;
virtual_overseer
});
}

#[test]
fn validation_work_ignores_wrong_collator() {
let mut test_state = TestState::default();
test_state.availability_cores[0] = CoreState::Scheduled(ScheduledCore {
para_id: ParaId::from(1),
collator: Some(Sr25519Keyring::Bob.public().into()),
});
test_state.availability_cores[0] =
CoreState::Scheduled(ScheduledCore { para_id: ParaId::from(1), collator: None });

test_harness(test_state.keystore.clone(), |mut virtual_overseer| async move {
test_startup(&mut virtual_overseer, &test_state).await;
Expand Down
1 change: 1 addition & 0 deletions node/network/collator-protocol/src/validator_side/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -921,6 +921,7 @@ async fn process_incoming_peer_message<Context>(
.span_per_relay_parent
.get(&relay_parent)
.map(|s| s.child("advertise-collation"));

if !state.view.contains(&relay_parent) {
gum::debug!(
target: LOG_TARGET,
Expand Down
5 changes: 1 addition & 4 deletions node/service/src/chain_spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,7 @@ fn default_parachains_host_configuration(
max_pov_size: MAX_POV_SIZE,
max_head_data_size: 32 * 1024,
group_rotation_frequency: 20,
chain_availability_period: 4,
thread_availability_period: 4,
paras_availability_period: 4,
max_upward_queue_count: 8,
max_upward_queue_size: 1024 * 1024,
max_downward_message_size: 1024 * 1024,
Expand All @@ -223,10 +222,8 @@ fn default_parachains_host_configuration(
hrmp_channel_max_capacity: 8,
hrmp_channel_max_total_size: 8 * 1024,
hrmp_max_parachain_inbound_channels: 4,
hrmp_max_parathread_inbound_channels: 4,
hrmp_channel_max_message_size: 1024 * 1024,
hrmp_max_parachain_outbound_channels: 4,
hrmp_max_parathread_outbound_channels: 4,
hrmp_max_message_num_per_candidate: 5,
dispute_period: 6,
no_show_slots: 2,
Expand Down
3 changes: 1 addition & 2 deletions node/test/service/src/chain_spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,7 @@ fn polkadot_testnet_genesis(
max_pov_size: MAX_POV_SIZE,
max_head_data_size: 32 * 1024,
group_rotation_frequency: 20,
chain_availability_period: 4,
thread_availability_period: 4,
paras_availability_period: 4,
no_show_slots: 10,
minimum_validation_upgrade_delay: 5,
..Default::default()
Expand Down
3 changes: 2 additions & 1 deletion primitives/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ pub use v5::{
UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode,
ValidationCodeHash, ValidatorId, ValidatorIndex, ValidatorSignature, ValidityAttestation,
ValidityError, ASSIGNMENT_KEY_TYPE_ID, LOWEST_PUBLIC_ID, MAX_CODE_SIZE, MAX_HEAD_DATA_SIZE,
MAX_POV_SIZE, PARACHAINS_INHERENT_IDENTIFIER, PARACHAIN_KEY_TYPE_ID,
MAX_POV_SIZE, ON_DEMAND_DEFAULT_QUEUE_MAX_SIZE, PARACHAINS_INHERENT_IDENTIFIER,
PARACHAIN_KEY_TYPE_ID,
};

#[cfg(feature = "std")]
Expand Down
61 changes: 51 additions & 10 deletions primitives/src/v5/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,11 @@ pub const MAX_HEAD_DATA_SIZE: u32 = 1 * 1024 * 1024;
// NOTE: This value is used in the runtime so be careful when changing it.
pub const MAX_POV_SIZE: u32 = 5 * 1024 * 1024;

/// Default queue size we use for the on-demand order book.
///
/// Can be adjusted in configuration.
pub const ON_DEMAND_DEFAULT_QUEUE_MAX_SIZE: u32 = 10_000;

// The public key of a keypair used by a validator for determining assignments
/// to approve included parachain candidates.
mod assignment_app {
Expand Down Expand Up @@ -812,29 +817,63 @@ pub struct ParathreadClaim(pub Id, pub Option<CollatorId>);
pub struct ParathreadEntry {
/// The claim.
pub claim: ParathreadClaim,
/// Number of retries.
/// Number of retries
pub retries: u32,
antonva marked this conversation as resolved.
Show resolved Hide resolved
}

/// An assignment for a parachain scheduled to be backed and included in a relay chain block.
#[derive(Clone, Encode, Decode, PartialEq, TypeInfo, RuntimeDebug)]
pub struct Assignment {
/// Assignment's ParaId
pub para_id: Id,
}

impl Assignment {
/// Create a new `Assignment`.
pub fn new(para_id: Id) -> Self {
Self { para_id }
}
}

/// An entry tracking a paras
#[derive(Clone, Encode, Decode, TypeInfo, PartialEq, RuntimeDebug)]
pub struct ParasEntry<N = BlockNumber> {
/// The `Assignment`
pub assignment: Assignment,
/// The number of times the entry has timed out in availability.
pub availability_timeouts: u32,
/// The block height where this entry becomes invalid.
pub ttl: N,
eskimor marked this conversation as resolved.
Show resolved Hide resolved
}

impl<N> ParasEntry<N> {
/// Return `Id` from the underlying `Assignment`.
pub fn para_id(&self) -> Id {
self.assignment.para_id
}

/// Create a new `ParasEntry`.
pub fn new(assignment: Assignment, now: N) -> Self {
ParasEntry { assignment, availability_timeouts: 0, ttl: now }
}
}

/// What is occupying a specific availability core.
#[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)]
#[cfg_attr(feature = "std", derive(PartialEq))]
pub enum CoreOccupied {
pub enum CoreOccupied<N> {
/// The core is not occupied.
Free,
/// A parathread.
Parathread(ParathreadEntry),
/// A parachain.
Parachain(Id),
/// A paras.
Paras(ParasEntry<N>),
}

impl CoreOccupied {
impl<N> CoreOccupied<N> {
/// Is core free?
pub fn is_free(&self) -> bool {
match self {
Self::Free => true,
Self::Parachain(_) => false,
Self::Parathread(_) => false,
Self::Paras(_) => false,
}
}
}
Expand Down Expand Up @@ -968,7 +1007,9 @@ impl<H, N> OccupiedCore<H, N> {
pub struct ScheduledCore {
/// The ID of a para scheduled.
pub para_id: Id,
/// The collator required to author the block, if any.
/// DEPRECATED: see: https://github.com/paritytech/polkadot/issues/7575
///
/// Will be removed in a future version.
pub collator: Option<CollatorId>,
}

Expand Down
7 changes: 5 additions & 2 deletions runtime/kusama/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ use scale_info::TypeInfo;
use sp_std::{cmp::Ordering, collections::btree_map::BTreeMap, prelude::*};

use runtime_parachains::{
assigner_parachains as parachains_assigner_parachains,
configuration as parachains_configuration, disputes as parachains_disputes,
disputes::slashing as parachains_slashing,
dmp as parachains_dmp, hrmp as parachains_hrmp, inclusion as parachains_inclusion,
Expand Down Expand Up @@ -1166,11 +1167,12 @@ impl parachains_paras_inherent::Config for Runtime {
type WeightInfo = weights::runtime_parachains_paras_inherent::WeightInfo<Runtime>;
}

impl runtime_parachains::scheduler_parachains::Config for Runtime {}
impl parachains_scheduler::Config for Runtime {
type AssignmentProvider = runtime_parachains::scheduler_parachains::Pallet<Runtime>;
type AssignmentProvider = ParaAssignmentProvider;
}

impl parachains_assigner_parachains::Config for Runtime {}

impl parachains_initializer::Config for Runtime {
type Randomness = pallet_babe::RandomnessFromOneEpochAgo<Runtime>;
type ForceOrigin = EnsureRoot<AccountId>;
Expand Down Expand Up @@ -1473,6 +1475,7 @@ construct_runtime! {
ParaSessionInfo: parachains_session_info::{Pallet, Storage} = 61,
ParasDisputes: parachains_disputes::{Pallet, Call, Storage, Event<T>} = 62,
ParasSlashing: parachains_slashing::{Pallet, Call, Storage, ValidateUnsigned} = 63,
ParaAssignmentProvider: parachains_assigner_parachains::{Pallet, Storage} = 64,

// Parachain Onboarding Pallets. Start indices at 70 to leave room.
Registrar: paras_registrar::{Pallet, Call, Storage, Event<T>} = 70,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,4 +140,6 @@ impl<T: frame_system::Config> runtime_parachains::configuration::WeightInfo for
.saturating_add(T::DbWeight::get().reads(3))
.saturating_add(T::DbWeight::get().writes(1))
}

fn set_config_with_perbill() -> Weight { todo!() }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be a ticket on the board for this, referenced here.

}
Loading
Loading