Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 10 additions & 6 deletions polkadot/node/core/approval-voting/src/import.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ use super::approval_db::v3;
use crate::{
backend::{Backend, OverlayedBackend},
criteria::{AssignmentCriteria, OurAssignment},
get_extended_session_info, get_session_info,
get_extended_session_info_by_index, get_session_info_by_index,
persisted_entries::CandidateEntry,
};

Expand Down Expand Up @@ -220,7 +220,8 @@ async fn imported_block_info<Sender: SubsystemSender<RuntimeApiMessage>>(
};

let extended_session_info =
get_extended_session_info(env.runtime_info, sender, block_hash, session_index).await;
get_extended_session_info_by_index(env.runtime_info, sender, block_hash, session_index)
.await;
let enable_v2_assignments = extended_session_info.map_or(false, |extended_session_info| {
*extended_session_info
.node_features
Expand All @@ -229,9 +230,10 @@ async fn imported_block_info<Sender: SubsystemSender<RuntimeApiMessage>>(
.unwrap_or(&false)
});

let session_info = get_session_info(env.runtime_info, sender, block_hash, session_index)
.await
.ok_or(ImportedBlockInfoError::SessionInfoUnavailable)?;
let session_info =
get_session_info_by_index(env.runtime_info, sender, block_hash, session_index)
.await
.ok_or(ImportedBlockInfoError::SessionInfoUnavailable)?;

gum::debug!(target: LOG_TARGET, ?enable_v2_assignments, "V2 assignments");
let (assignments, slot, relay_vrf_story) = {
Expand Down Expand Up @@ -456,7 +458,9 @@ pub(crate) async fn handle_new_head<
} = imported_block_info;

let session_info =
match get_session_info(session_info_provider, sender, head, session_index).await {
match get_session_info_by_index(session_info_provider, sender, head, session_index)
.await
{
Some(session_info) => session_info,
None => return Ok(Vec::new()),
};
Expand Down
81 changes: 56 additions & 25 deletions polkadot/node/core/approval-voting/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -851,6 +851,27 @@ async fn get_extended_session_info<'a, Sender>(
runtime_info: &'a mut RuntimeInfo,
sender: &mut Sender,
relay_parent: Hash,
) -> Option<&'a ExtendedSessionInfo>
where
Sender: SubsystemSender<RuntimeApiMessage>,
{
match runtime_info.get_session_info(sender, relay_parent).await {
Ok(extended_info) => Some(&extended_info),
Err(_) => {
gum::debug!(
target: LOG_TARGET,
?relay_parent,
"Can't obtain SessionInfo or ExecutorParams"
);
None
},
}
}

async fn get_extended_session_info_by_index<'a, Sender>(
runtime_info: &'a mut RuntimeInfo,
sender: &mut Sender,
relay_parent: Hash,
session_index: SessionIndex,
) -> Option<&'a ExtendedSessionInfo>
where
Expand All @@ -873,7 +894,7 @@ where
}
}

async fn get_session_info<'a, Sender>(
async fn get_session_info_by_index<'a, Sender>(
runtime_info: &'a mut RuntimeInfo,
sender: &mut Sender,
relay_parent: Hash,
Expand All @@ -882,7 +903,7 @@ async fn get_session_info<'a, Sender>(
where
Sender: SubsystemSender<RuntimeApiMessage>,
{
get_extended_session_info(runtime_info, sender, relay_parent, session_index)
get_extended_session_info_by_index(runtime_info, sender, relay_parent, session_index)
.await
.map(|extended_info| &extended_info.session_info)
}
Expand Down Expand Up @@ -976,7 +997,7 @@ impl State {
where
Sender: SubsystemSender<RuntimeApiMessage>,
{
let session_info = match get_session_info(
let session_info = match get_session_info_by_index(
session_info_provider,
sender,
block_entry.parent_hash(),
Expand Down Expand Up @@ -1901,8 +1922,10 @@ async fn distribution_messages_for_activation<Sender: SubsystemSender<RuntimeApi
match get_extended_session_info(
session_info_provider,
sender,
block_entry.block_hash(),
block_entry.session(),
candidate_entry
.candidate_receipt()
.descriptor()
.relay_parent(),
)
.await
{
Expand Down Expand Up @@ -2686,7 +2709,7 @@ where
)),
};

let session_info = match get_session_info(
let session_info = match get_session_info_by_index(
session_info_provider,
sender,
block_entry.parent_hash(),
Expand Down Expand Up @@ -3282,24 +3305,32 @@ async fn process_wakeup<Sender: SubsystemSender<RuntimeApiMessage>>(
_ => return Ok(Vec::new()),
};

let ExtendedSessionInfo { ref session_info, ref executor_params, .. } =
match get_extended_session_info(
session_info_provider,
sender,
block_entry.block_hash(),
block_entry.session(),
)
.await
{
Some(i) => i,
None => return Ok(Vec::new()),
};
let (no_show_slots, needed_approvals) = match get_session_info_by_index(
session_info_provider,
sender,
block_entry.block_hash(),
block_entry.session(),
)
.await
{
Some(i) => (i.no_show_slots, i.needed_approvals),
None => return Ok(Vec::new()),
};

let ExtendedSessionInfo { ref executor_params, .. } = match get_extended_session_info(
session_info_provider,
sender,
candidate_entry.candidate_receipt().descriptor().relay_parent(),
)
.await
{
Some(i) => i,
None => return Ok(Vec::new()),
};

let block_tick = slot_number_to_tick(state.slot_duration_millis, block_entry.slot());
let no_show_duration = slot_number_to_tick(
state.slot_duration_millis,
Slot::from(u64::from(session_info.no_show_slots)),
);
let no_show_duration =
slot_number_to_tick(state.slot_duration_millis, Slot::from(u64::from(no_show_slots)));
let tranche_now = state.clock.tranche_now(state.slot_duration_millis, block_entry.slot());

gum::trace!(
Expand All @@ -3322,7 +3353,7 @@ async fn process_wakeup<Sender: SubsystemSender<RuntimeApiMessage>>(
tranche_now,
block_tick,
no_show_duration,
session_info.needed_approvals as _,
needed_approvals as _,
);

let should_trigger = should_trigger_assignment(
Expand Down Expand Up @@ -3742,7 +3773,7 @@ async fn issue_approval<
},
};

let session_info = match get_session_info(
let session_info = match get_session_info_by_index(
session_info_provider,
sender,
block_entry.parent_hash(),
Expand Down Expand Up @@ -3868,7 +3899,7 @@ async fn maybe_create_signature<
None => return Ok(sign_no_later_then),
};

let session_info = match get_session_info(
let session_info = match get_session_info_by_index(
session_info_provider,
sender,
block_entry.parent_hash(),
Expand Down
8 changes: 8 additions & 0 deletions prdoc/pr_9774.prdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
title: Fix executor param fetching session index
doc:
- audience: Node Dev
description: |-
Fix executor environment parameters fetching inconsistency
crates:
- name: polkadot-node-core-approval-voting
bump: patch
Loading