Unverified Commit f9186eb2 authored by Bernhard Schuster's avatar Bernhard Schuster Committed by GitHub
Browse files

feat/jaeger: more spans, more stages (#2477)

* feat/jaeger: more spans, more stages

Stage numbers are still arbitrarily picked.

* feat/jaeger: additional spans

* chore/spellcheck: improve the dictionary

* fix/jaeger JaegerSpan -> jaeger::Span
parent afb6daa7
Pipeline #124805 passed with stages
in 33 minutes and 46 seconds
...@@ -37,6 +37,7 @@ instantiate/B ...@@ -37,6 +37,7 @@ instantiate/B
intrinsic/MS intrinsic/MS
intrinsics intrinsics
io io
jaeger/MS
js js
keccak256/M keccak256/M
KSM/S KSM/S
...@@ -68,6 +69,7 @@ struct/MS ...@@ -68,6 +69,7 @@ struct/MS
subsystem/MS subsystem/MS
subsystems' subsystems'
taskmanager/MS taskmanager/MS
TCP
teleport/RG teleport/RG
teleportation/SM teleportation/SM
teleporter/SM teleporter/SM
...@@ -76,6 +78,8 @@ testnet/MS ...@@ -76,6 +78,8 @@ testnet/MS
trie/MS trie/MS
trustless/Y trustless/Y
ubuntu/M ubuntu/M
UDP
UI
union/MSG union/MSG
unservable/B unservable/B
validator/SM validator/SM
......
...@@ -31,7 +31,7 @@ use polkadot_primitives::v1::{ ...@@ -31,7 +31,7 @@ use polkadot_primitives::v1::{
}; };
use polkadot_node_subsystem_util::TimeoutExt; use polkadot_node_subsystem_util::TimeoutExt;
use polkadot_subsystem::{ use polkadot_subsystem::{
ActiveLeavesUpdate, errors::RuntimeApiError, JaegerSpan, messages::AllMessages, ActiveLeavesUpdate, errors::RuntimeApiError, jaeger, messages::AllMessages,
}; };
use polkadot_node_subsystem_test_helpers as test_helpers; use polkadot_node_subsystem_test_helpers as test_helpers;
use sp_keyring::Sr25519Keyring; use sp_keyring::Sr25519Keyring;
...@@ -240,7 +240,7 @@ fn runtime_api_error_does_not_stop_the_subsystem() { ...@@ -240,7 +240,7 @@ fn runtime_api_error_does_not_stop_the_subsystem() {
overseer_signal( overseer_signal(
&mut virtual_overseer, &mut virtual_overseer,
OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { OverseerSignal::ActiveLeaves(ActiveLeavesUpdate {
activated: vec![(new_leaf, Arc::new(JaegerSpan::Disabled))].into(), activated: vec![(new_leaf, Arc::new(jaeger::Span::Disabled))].into(),
deactivated: vec![].into(), deactivated: vec![].into(),
}), }),
).await; ).await;
...@@ -885,7 +885,7 @@ async fn import_leaf( ...@@ -885,7 +885,7 @@ async fn import_leaf(
overseer_signal( overseer_signal(
virtual_overseer, virtual_overseer,
OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { OverseerSignal::ActiveLeaves(ActiveLeavesUpdate {
activated: vec![(new_leaf, Arc::new(JaegerSpan::Disabled))].into(), activated: vec![(new_leaf, Arc::new(jaeger::Span::Disabled))].into(),
deactivated: vec![].into(), deactivated: vec![].into(),
}), }),
).await; ).await;
......
...@@ -35,7 +35,8 @@ use polkadot_node_primitives::{ ...@@ -35,7 +35,8 @@ use polkadot_node_primitives::{
Statement, SignedFullStatement, ValidationResult, Statement, SignedFullStatement, ValidationResult,
}; };
use polkadot_subsystem::{ use polkadot_subsystem::{
JaegerSpan, PerLeafSpan, PerLeafSpan, Stage,
jaeger,
messages::{ messages::{
AllMessages, AvailabilityStoreMessage, CandidateBackingMessage, CandidateSelectionMessage, AllMessages, AvailabilityStoreMessage, CandidateBackingMessage, CandidateSelectionMessage,
CandidateValidationMessage, PoVDistributionMessage, ProvisionableData, CandidateValidationMessage, PoVDistributionMessage, ProvisionableData,
...@@ -134,7 +135,7 @@ struct CandidateBackingJob { ...@@ -134,7 +135,7 @@ struct CandidateBackingJob {
/// The collator required to author the candidate, if any. /// The collator required to author the candidate, if any.
required_collator: Option<CollatorId>, required_collator: Option<CollatorId>,
/// Spans for all candidates that are not yet backable. /// Spans for all candidates that are not yet backable.
unbacked_candidates: HashMap<CandidateHash, JaegerSpan>, unbacked_candidates: HashMap<CandidateHash, jaeger::Span>,
/// We issued `Seconded`, `Valid` or `Invalid` statements on about these candidates. /// We issued `Seconded`, `Valid` or `Invalid` statements on about these candidates.
issued_statements: HashSet<CandidateHash>, issued_statements: HashSet<CandidateHash>,
/// These candidates are undergoing validation in the background. /// These candidates are undergoing validation in the background.
...@@ -294,7 +295,7 @@ async fn make_pov_available( ...@@ -294,7 +295,7 @@ async fn make_pov_available(
candidate_hash: CandidateHash, candidate_hash: CandidateHash,
validation_data: polkadot_primitives::v1::PersistedValidationData, validation_data: polkadot_primitives::v1::PersistedValidationData,
expected_erasure_root: Hash, expected_erasure_root: Hash,
span: Option<&JaegerSpan>, span: Option<&jaeger::Span>,
) -> Result<Result<(), InvalidErasureRoot>, Error> { ) -> Result<Result<(), InvalidErasureRoot>, Error> {
let available_data = AvailableData { let available_data = AvailableData {
pov, pov,
...@@ -383,7 +384,7 @@ struct BackgroundValidationParams<F> { ...@@ -383,7 +384,7 @@ struct BackgroundValidationParams<F> {
pov: Option<Arc<PoV>>, pov: Option<Arc<PoV>>,
validator_index: Option<ValidatorIndex>, validator_index: Option<ValidatorIndex>,
n_validators: usize, n_validators: usize,
span: Option<JaegerSpan>, span: Option<jaeger::Span>,
make_command: F, make_command: F,
} }
...@@ -415,7 +416,11 @@ async fn validate_and_make_available( ...@@ -415,7 +416,11 @@ async fn validate_and_make_available(
}; };
let v = { let v = {
let _span = span.as_ref().map(|s| s.child("request-validation")); let _span = span.as_ref().map(|s| {
s.child_builder("request-validation")
.with_pov(&pov)
.build()
});
request_candidate_validation(&mut tx_from, candidate.descriptor.clone(), pov.clone()).await? request_candidate_validation(&mut tx_from, candidate.descriptor.clone(), pov.clone()).await?
}; };
...@@ -513,7 +518,7 @@ impl CandidateBackingJob { ...@@ -513,7 +518,7 @@ impl CandidateBackingJob {
#[tracing::instrument(level = "trace", skip(self), fields(subsystem = LOG_TARGET))] #[tracing::instrument(level = "trace", skip(self), fields(subsystem = LOG_TARGET))]
async fn handle_validated_candidate_command( async fn handle_validated_candidate_command(
&mut self, &mut self,
parent_span: &JaegerSpan, parent_span: &jaeger::Span,
command: ValidatedCandidateCommand, command: ValidatedCandidateCommand,
) -> Result<(), Error> { ) -> Result<(), Error> {
let candidate_hash = command.candidate_hash(); let candidate_hash = command.candidate_hash();
...@@ -609,7 +614,7 @@ impl CandidateBackingJob { ...@@ -609,7 +614,7 @@ impl CandidateBackingJob {
#[tracing::instrument(level = "trace", skip(self, parent_span, pov), fields(subsystem = LOG_TARGET))] #[tracing::instrument(level = "trace", skip(self, parent_span, pov), fields(subsystem = LOG_TARGET))]
async fn validate_and_second( async fn validate_and_second(
&mut self, &mut self,
parent_span: &JaegerSpan, parent_span: &jaeger::Span,
candidate: &CandidateReceipt, candidate: &CandidateReceipt,
pov: Arc<PoV>, pov: Arc<PoV>,
) -> Result<(), Error> { ) -> Result<(), Error> {
...@@ -649,7 +654,7 @@ impl CandidateBackingJob { ...@@ -649,7 +654,7 @@ impl CandidateBackingJob {
async fn sign_import_and_distribute_statement( async fn sign_import_and_distribute_statement(
&mut self, &mut self,
statement: Statement, statement: Statement,
parent_span: &JaegerSpan, parent_span: &jaeger::Span,
) -> Result<Option<SignedFullStatement>, Error> { ) -> Result<Option<SignedFullStatement>, Error> {
if let Some(signed_statement) = self.sign_statement(statement).await { if let Some(signed_statement) = self.sign_statement(statement).await {
self.import_statement(&signed_statement, parent_span).await?; self.import_statement(&signed_statement, parent_span).await?;
...@@ -682,7 +687,7 @@ impl CandidateBackingJob { ...@@ -682,7 +687,7 @@ impl CandidateBackingJob {
async fn import_statement( async fn import_statement(
&mut self, &mut self,
statement: &SignedFullStatement, statement: &SignedFullStatement,
parent_span: &JaegerSpan, parent_span: &jaeger::Span,
) -> Result<Option<TableSummary>, Error> { ) -> Result<Option<TableSummary>, Error> {
tracing::debug!( tracing::debug!(
target: LOG_TARGET, target: LOG_TARGET,
...@@ -745,11 +750,18 @@ impl CandidateBackingJob { ...@@ -745,11 +750,18 @@ impl CandidateBackingJob {
} }
#[tracing::instrument(level = "trace", skip(self, span), fields(subsystem = LOG_TARGET))] #[tracing::instrument(level = "trace", skip(self, span), fields(subsystem = LOG_TARGET))]
async fn process_msg(&mut self, span: &JaegerSpan, msg: CandidateBackingMessage) -> Result<(), Error> { async fn process_msg(&mut self, span: &jaeger::Span, msg: CandidateBackingMessage) -> Result<(), Error> {
match msg { match msg {
CandidateBackingMessage::Second(_, candidate, pov) => { CandidateBackingMessage::Second(_relay_parent, candidate, pov) => {
let _timer = self.metrics.time_process_second(); let _timer = self.metrics.time_process_second();
let span = span.child_builder("second")
.with_stage(jaeger::Stage::CandidateBacking)
.with_pov(&pov)
.with_candidate(&candidate.hash())
.with_relay_parent(&_relay_parent)
.build();
// Sanity check that candidate is from our assignment. // Sanity check that candidate is from our assignment.
if Some(candidate.descriptor().para_id) != self.assignment { if Some(candidate.descriptor().para_id) != self.assignment {
return Ok(()); return Ok(());
...@@ -768,8 +780,13 @@ impl CandidateBackingJob { ...@@ -768,8 +780,13 @@ impl CandidateBackingJob {
} }
} }
} }
CandidateBackingMessage::Statement(_, statement) => { CandidateBackingMessage::Statement(_relay_parent, statement) => {
let _timer = self.metrics.time_process_statement(); let _timer = self.metrics.time_process_statement();
let span = span.child_builder("statement")
.with_stage(jaeger::Stage::CandidateBacking)
.with_candidate(&statement.payload().candidate_hash())
.with_relay_parent(&_relay_parent)
.build();
self.check_statement_signature(&statement)?; self.check_statement_signature(&statement)?;
match self.maybe_validate_and_import(&span, statement).await { match self.maybe_validate_and_import(&span, statement).await {
...@@ -801,7 +818,7 @@ impl CandidateBackingJob { ...@@ -801,7 +818,7 @@ impl CandidateBackingJob {
async fn kick_off_validation_work( async fn kick_off_validation_work(
&mut self, &mut self,
summary: TableSummary, summary: TableSummary,
span: Option<JaegerSpan>, span: Option<jaeger::Span>,
) -> Result<(), Error> { ) -> Result<(), Error> {
let candidate_hash = summary.candidate; let candidate_hash = summary.candidate;
...@@ -851,7 +868,7 @@ impl CandidateBackingJob { ...@@ -851,7 +868,7 @@ impl CandidateBackingJob {
#[tracing::instrument(level = "trace", skip(self, parent_span), fields(subsystem = LOG_TARGET))] #[tracing::instrument(level = "trace", skip(self, parent_span), fields(subsystem = LOG_TARGET))]
async fn maybe_validate_and_import( async fn maybe_validate_and_import(
&mut self, &mut self,
parent_span: &JaegerSpan, parent_span: &jaeger::Span,
statement: SignedFullStatement, statement: SignedFullStatement,
) -> Result<(), Error> { ) -> Result<(), Error> {
if let Some(summary) = self.import_statement(&statement, parent_span).await? { if let Some(summary) = self.import_statement(&statement, parent_span).await? {
...@@ -896,7 +913,7 @@ impl CandidateBackingJob { ...@@ -896,7 +913,7 @@ impl CandidateBackingJob {
} }
/// Insert or get the unbacked-span for the given candidate hash. /// Insert or get the unbacked-span for the given candidate hash.
fn insert_or_get_unbacked_span(&mut self, parent_span: &JaegerSpan, hash: CandidateHash) -> Option<&JaegerSpan> { fn insert_or_get_unbacked_span(&mut self, parent_span: &jaeger::Span, hash: CandidateHash) -> Option<&jaeger::Span> {
if !self.backed.contains(&hash) { if !self.backed.contains(&hash) {
// only add if we don't consider this backed. // only add if we don't consider this backed.
let span = self.unbacked_candidates.entry(hash).or_insert_with(|| { let span = self.unbacked_candidates.entry(hash).or_insert_with(|| {
...@@ -908,16 +925,22 @@ impl CandidateBackingJob { ...@@ -908,16 +925,22 @@ impl CandidateBackingJob {
} }
} }
fn get_unbacked_validation_child(&mut self, parent_span: &JaegerSpan, hash: CandidateHash) -> Option<JaegerSpan> { fn get_unbacked_validation_child(&mut self, parent_span: &jaeger::Span, hash: CandidateHash) -> Option<jaeger::Span> {
self.insert_or_get_unbacked_span(parent_span, hash).map(|span| span.child_with_candidate("validation", &hash)) self.insert_or_get_unbacked_span(parent_span, hash)
.map(|span| {
span.child_builder("validation")
.with_candidate(&hash)
.with_stage(Stage::CandidateBacking)
.build()
})
} }
fn get_unbacked_statement_child( fn get_unbacked_statement_child(
&mut self, &mut self,
parent_span: &JaegerSpan, parent_span: &jaeger::Span,
hash: CandidateHash, hash: CandidateHash,
validator: ValidatorIndex, validator: ValidatorIndex,
) -> Option<JaegerSpan> { ) -> Option<jaeger::Span> {
self.insert_or_get_unbacked_span(parent_span, hash).map(|span| { self.insert_or_get_unbacked_span(parent_span, hash).map(|span| {
span.child_builder("import-statement") span.child_builder("import-statement")
.with_candidate(&hash) .with_candidate(&hash)
...@@ -926,7 +949,7 @@ impl CandidateBackingJob { ...@@ -926,7 +949,7 @@ impl CandidateBackingJob {
}) })
} }
fn remove_unbacked_span(&mut self, hash: &CandidateHash) -> Option<JaegerSpan> { fn remove_unbacked_span(&mut self, hash: &CandidateHash) -> Option<jaeger::Span> {
self.unbacked_candidates.remove(hash) self.unbacked_candidates.remove(hash)
} }
...@@ -966,7 +989,7 @@ impl util::JobTrait for CandidateBackingJob { ...@@ -966,7 +989,7 @@ impl util::JobTrait for CandidateBackingJob {
#[tracing::instrument(skip(span, keystore, metrics, rx_to, tx_from), fields(subsystem = LOG_TARGET))] #[tracing::instrument(skip(span, keystore, metrics, rx_to, tx_from), fields(subsystem = LOG_TARGET))]
fn run( fn run(
parent: Hash, parent: Hash,
span: Arc<JaegerSpan>, span: Arc<jaeger::Span>,
keystore: SyncCryptoStorePtr, keystore: SyncCryptoStorePtr,
metrics: Metrics, metrics: Metrics,
rx_to: mpsc::Receiver<Self::ToJob>, rx_to: mpsc::Receiver<Self::ToJob>,
...@@ -1379,7 +1402,7 @@ mod tests { ...@@ -1379,7 +1402,7 @@ mod tests {
virtual_overseer.send(FromOverseer::Signal( virtual_overseer.send(FromOverseer::Signal(
OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work( OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(
test_state.relay_parent, test_state.relay_parent,
Arc::new(JaegerSpan::Disabled), Arc::new(jaeger::Span::Disabled),
))) )))
).await; ).await;
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
use futures::{channel::{mpsc, oneshot}, lock::Mutex, prelude::*, future, Future}; use futures::{channel::{mpsc, oneshot}, lock::Mutex, prelude::*, future, Future};
use sp_keystore::{Error as KeystoreError, SyncCryptoStorePtr}; use sp_keystore::{Error as KeystoreError, SyncCryptoStorePtr};
use polkadot_node_subsystem::{ use polkadot_node_subsystem::{
jaeger, PerLeafSpan, JaegerSpan, jaeger, PerLeafSpan,
messages::{ messages::{
AllMessages, AvailabilityStoreMessage, BitfieldDistributionMessage, AllMessages, AvailabilityStoreMessage, BitfieldDistributionMessage,
BitfieldSigningMessage, RuntimeApiMessage, RuntimeApiRequest, BitfieldSigningMessage, RuntimeApiMessage, RuntimeApiRequest,
...@@ -75,7 +75,7 @@ async fn get_core_availability( ...@@ -75,7 +75,7 @@ async fn get_core_availability(
core: CoreState, core: CoreState,
validator_idx: ValidatorIndex, validator_idx: ValidatorIndex,
sender: &Mutex<&mut mpsc::Sender<FromJobCommand>>, sender: &Mutex<&mut mpsc::Sender<FromJobCommand>>,
span: &jaeger::JaegerSpan, span: &jaeger::Span,
) -> Result<bool, Error> { ) -> Result<bool, Error> {
if let CoreState::Occupied(core) = core { if let CoreState::Occupied(core) = core {
let _span = span.child("query-chunk-availability"); let _span = span.child("query-chunk-availability");
...@@ -132,7 +132,7 @@ async fn get_availability_cores( ...@@ -132,7 +132,7 @@ async fn get_availability_cores(
#[tracing::instrument(level = "trace", skip(sender, span), fields(subsystem = LOG_TARGET))] #[tracing::instrument(level = "trace", skip(sender, span), fields(subsystem = LOG_TARGET))]
async fn construct_availability_bitfield( async fn construct_availability_bitfield(
relay_parent: Hash, relay_parent: Hash,
span: &jaeger::JaegerSpan, span: &jaeger::Span,
validator_idx: ValidatorIndex, validator_idx: ValidatorIndex,
sender: &mut mpsc::Sender<FromJobCommand>, sender: &mut mpsc::Sender<FromJobCommand>,
) -> Result<AvailabilityBitfield, Error> { ) -> Result<AvailabilityBitfield, Error> {
...@@ -218,7 +218,7 @@ impl JobTrait for BitfieldSigningJob { ...@@ -218,7 +218,7 @@ impl JobTrait for BitfieldSigningJob {
#[tracing::instrument(skip(span, keystore, metrics, _receiver, sender), fields(subsystem = LOG_TARGET))] #[tracing::instrument(skip(span, keystore, metrics, _receiver, sender), fields(subsystem = LOG_TARGET))]
fn run( fn run(
relay_parent: Hash, relay_parent: Hash,
span: Arc<JaegerSpan>, span: Arc<jaeger::Span>,
keystore: Self::RunArgs, keystore: Self::RunArgs,
metrics: Self::Metrics, metrics: Self::Metrics,
_receiver: mpsc::Receiver<BitfieldSigningMessage>, _receiver: mpsc::Receiver<BitfieldSigningMessage>,
...@@ -321,7 +321,7 @@ mod tests { ...@@ -321,7 +321,7 @@ mod tests {
let future = construct_availability_bitfield( let future = construct_availability_bitfield(
relay_parent, relay_parent,
&jaeger::JaegerSpan::Disabled, &jaeger::Span::Disabled,
validator_index, validator_index,
&mut sender, &mut sender,
).fuse(); ).fuse();
......
...@@ -25,7 +25,7 @@ use futures::{ ...@@ -25,7 +25,7 @@ use futures::{
}; };
use sp_keystore::SyncCryptoStorePtr; use sp_keystore::SyncCryptoStorePtr;
use polkadot_node_subsystem::{ use polkadot_node_subsystem::{
jaeger, JaegerSpan, PerLeafSpan, jaeger, PerLeafSpan,
errors::ChainApiError, errors::ChainApiError,
messages::{ messages::{
AllMessages, CandidateBackingMessage, CandidateSelectionMessage, CollatorProtocolMessage, AllMessages, CandidateBackingMessage, CandidateSelectionMessage, CollatorProtocolMessage,
...@@ -96,7 +96,7 @@ impl JobTrait for CandidateSelectionJob { ...@@ -96,7 +96,7 @@ impl JobTrait for CandidateSelectionJob {
#[tracing::instrument(skip(keystore, metrics, receiver, sender), fields(subsystem = LOG_TARGET))] #[tracing::instrument(skip(keystore, metrics, receiver, sender), fields(subsystem = LOG_TARGET))]
fn run( fn run(
relay_parent: Hash, relay_parent: Hash,
span: Arc<JaegerSpan>, span: Arc<jaeger::Span>,
keystore: Self::RunArgs, keystore: Self::RunArgs,
metrics: Self::Metrics, metrics: Self::Metrics,
receiver: mpsc::Receiver<CandidateSelectionMessage>, receiver: mpsc::Receiver<CandidateSelectionMessage>,
...@@ -104,7 +104,10 @@ impl JobTrait for CandidateSelectionJob { ...@@ -104,7 +104,10 @@ impl JobTrait for CandidateSelectionJob {
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send>> { ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send>> {
let span = PerLeafSpan::new(span, "candidate-selection"); let span = PerLeafSpan::new(span, "candidate-selection");
async move { async move {
let _span = span.child("query-runtime"); let _span = span.child_builder("query-runtime")
.with_relay_parent(&relay_parent)
.with_stage(jaeger::Stage::CandidateSelection)
.build();
let (groups, cores) = futures::try_join!( let (groups, cores) = futures::try_join!(
try_runtime_api!(request_validator_groups(relay_parent, &mut sender).await), try_runtime_api!(request_validator_groups(relay_parent, &mut sender).await),
try_runtime_api!(request_from_runtime( try_runtime_api!(request_from_runtime(
...@@ -118,7 +121,10 @@ impl JobTrait for CandidateSelectionJob { ...@@ -118,7 +121,10 @@ impl JobTrait for CandidateSelectionJob {
let cores = try_runtime_api!(cores); let cores = try_runtime_api!(cores);
drop(_span); drop(_span);
let _span = span.child("find-assignment"); let _span = span.child_builder("find-assignment")
.with_relay_parent(&relay_parent)
.with_stage(jaeger::Stage::CandidateSelection)
.build();
let n_cores = cores.len(); let n_cores = cores.len();
...@@ -172,8 +178,11 @@ impl CandidateSelectionJob { ...@@ -172,8 +178,11 @@ impl CandidateSelectionJob {
} }
} }
async fn run_loop(&mut self, span: &jaeger::JaegerSpan) -> Result<(), Error> { async fn run_loop(&mut self, span: &jaeger::Span) -> Result<(), Error> {
let span = span.child("run-loop"); let span = span.child_builder("run-loop")
.with_stage(jaeger::Stage::CandidateSelection)
.build();
loop { loop {
match self.receiver.next().await { match self.receiver.next().await {
Some(CandidateSelectionMessage::Collation( Some(CandidateSelectionMessage::Collation(
...@@ -185,14 +194,22 @@ impl CandidateSelectionJob { ...@@ -185,14 +194,22 @@ impl CandidateSelectionJob {
self.handle_collation(relay_parent, para_id, collator_id).await; self.handle_collation(relay_parent, para_id, collator_id).await;
} }
Some(CandidateSelectionMessage::Invalid( Some(CandidateSelectionMessage::Invalid(
_, _relay_parent,
candidate_receipt, candidate_receipt,
)) => { )) => {
let _span = span.child("handle-invalid"); let _span = span.child_builder("handle-invalid")
.with_stage(jaeger::Stage::CandidateSelection)
.with_candidate(&candidate_receipt.hash())
.with_relay_parent(&_relay_parent)
.build();
self.handle_invalid(candidate_receipt).await; self.handle_invalid(candidate_receipt).await;
} }
Some(CandidateSelectionMessage::Seconded(_, statement)) => { Some(CandidateSelectionMessage::Seconded(_relay_parent, statement)) => {
let _span = span.child("handle-seconded"); let _span = span.child_builder("handle-seconded")
.with_stage(jaeger::Stage::CandidateSelection)
.with_candidate(&statement.payload().candidate_hash())
.with_relay_parent(&_relay_parent)
.build();
self.handle_seconded(statement).await; self.handle_seconded(statement).await;
} }
None => break, None => break,
...@@ -514,7 +531,7 @@ mod tests { ...@@ -514,7 +531,7 @@ mod tests {
}; };
preconditions(&mut job); preconditions(&mut job);
let span = jaeger::JaegerSpan::Disabled; let span = jaeger::Span::Disabled;
let (_, job_result) = futures::executor::block_on(future::join( let (_, job_result) = futures::executor::block_on(future::join(
test(to_job_tx, from_job_rx), test(to_job_tx, from_job_rx),
job.run_loop(&span), job.run_loop(&span),
......
...@@ -25,7 +25,7 @@ use futures::{ ...@@ -25,7 +25,7 @@ use futures::{
prelude::*, prelude::*,
}; };
use polkadot_node_subsystem::{ use polkadot_node_subsystem::{
errors::{ChainApiError, RuntimeApiError}, PerLeafSpan, JaegerSpan, errors::{ChainApiError, RuntimeApiError}, PerLeafSpan, jaeger,
messages::{ messages::{
AllMessages, CandidateBackingMessage, ChainApiMessage, ProvisionableData, ProvisionerInherentData, AllMessages, CandidateBackingMessage, ChainApiMessage, ProvisionableData, ProvisionerInherentData,
ProvisionerMessage, ProvisionerMessage,
...@@ -141,7 +141,7 @@ impl JobTrait for ProvisioningJob { ...@@ -141,7 +141,7 @@ impl JobTrait for ProvisioningJob {
#[tracing::instrument(skip(span, _run_args, metrics, receiver, sender), fields(subsystem = LOG_TARGET))] #[tracing::instrument(skip(span, _run_args, metrics, receiver, sender), fields(subsystem = LOG_TARGET))]
fn run( fn run(
relay_parent: Hash, relay_parent: Hash,
span: Arc<JaegerSpan>, span: Arc<jaeger::Span>,
_run_args: Self::RunArgs, _run_args: Self::RunArgs,
metrics: Self::Metrics, metrics: Self::Metrics,
receiver: mpsc::Receiver<ProvisionerMessage>, receiver: mpsc::Receiver<ProvisionerMessage>,
......
...@@ -125,8 +125,8 @@ impl JaegerConfigBuilder { ...@@ -125,8 +125,8 @@ impl JaegerConfigBuilder {
/// This just works as auxiliary structure to easily store both. /// This just works as auxiliary structure to easily store both.
#[derive(Debug)] #[derive(Debug)]
pub struct PerLeafSpan { pub struct PerLeafSpan {
leaf_span: Arc<JaegerSpan>, leaf_span: Arc<Span>,
span: JaegerSpan, span: Span,
}