diff --git a/polkadot/node/core/parachains-inherent/src/lib.rs b/polkadot/node/core/parachains-inherent/src/lib.rs index af14216749ff92859e71fa47f48b71f2b5f43a24..e9441d21aefe9b39f7563d2494f7b709e1e45670 100644 --- a/polkadot/node/core/parachains-inherent/src/lib.rs +++ b/polkadot/node/core/parachains-inherent/src/lib.rs @@ -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), diff --git a/polkadot/node/overseer/src/lib.rs b/polkadot/node/overseer/src/lib.rs index 21160bddaecb523ccdf9e5d2f91d4ea0af994c06..1ce6a6fdb65852181288f2bc6e27b1f7e91927a6 100644 --- a/polkadot/node/overseer/src/lib.rs +++ b/polkadot/node/overseer/src/lib.rs @@ -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()