mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-10 17:11:03 +00:00
Use active_leaves instead of known_leaves (#6068)
* Use active_leaves for synchronization. Otherwise on reverts the syncrhonization of create inherent would not work. * Add some trace logs.
This commit is contained in:
@@ -57,6 +57,11 @@ impl ParachainsInherentDataProvider {
|
||||
) -> Result<Self, Error> {
|
||||
let pid = async {
|
||||
let (sender, receiver) = futures::channel::oneshot::channel();
|
||||
gum::trace!(
|
||||
target: LOG_TARGET,
|
||||
relay_parent = ?parent,
|
||||
"Inherent data requested by Babe"
|
||||
);
|
||||
overseer.wait_for_activation(parent, sender).await;
|
||||
receiver
|
||||
.await
|
||||
@@ -64,6 +69,11 @@ impl ParachainsInherentDataProvider {
|
||||
.map_err(|e| Error::Subsystem(e))?;
|
||||
|
||||
let (sender, receiver) = futures::channel::oneshot::channel();
|
||||
gum::trace!(
|
||||
target: LOG_TARGET,
|
||||
relay_parent = ?parent,
|
||||
"Requesting inherent data (after having waited for activation)"
|
||||
);
|
||||
overseer
|
||||
.send_msg(
|
||||
ProvisionerMessage::RequestInherentData(parent, sender),
|
||||
|
||||
@@ -843,6 +843,11 @@ where
|
||||
|
||||
self.metrics.on_head_activated();
|
||||
if let Some(listeners) = self.activation_external_listeners.remove(hash) {
|
||||
gum::trace!(
|
||||
target: LOG_TARGET,
|
||||
relay_parent = ?hash,
|
||||
"Leaf got activated, notifying exterinal listeners"
|
||||
);
|
||||
for listener in listeners {
|
||||
// it's fine if the listener is no longer interested
|
||||
let _ = listener.send(Ok(()));
|
||||
@@ -884,14 +889,20 @@ where
|
||||
fn handle_external_request(&mut self, request: ExternalRequest) {
|
||||
match request {
|
||||
ExternalRequest::WaitForActivation { hash, response_channel } => {
|
||||
// We use known leaves here because the `WaitForActivation` message
|
||||
// is primarily concerned about leaves which subsystems have simply
|
||||
// not been made aware of yet. Anything in the known leaves set,
|
||||
// even if stale, has been activated in the past.
|
||||
if self.known_leaves.peek(&hash).is_some() {
|
||||
if self.active_leaves.get(&hash).is_some() {
|
||||
gum::trace!(
|
||||
target: LOG_TARGET,
|
||||
relay_parent = ?hash,
|
||||
"Leaf was already ready - answering `WaitForActivation`"
|
||||
);
|
||||
// it's fine if the listener is no longer interested
|
||||
let _ = response_channel.send(Ok(()));
|
||||
} else {
|
||||
gum::trace!(
|
||||
target: LOG_TARGET,
|
||||
relay_parent = ?hash,
|
||||
"Leaf not yet ready - queuing `WaitForActivation` sender"
|
||||
);
|
||||
self.activation_external_listeners
|
||||
.entry(hash)
|
||||
.or_default()
|
||||
|
||||
Reference in New Issue
Block a user