initial jaeger integration (#2047)

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
Bernhard Schuster
2020-12-11 17:38:55 +01:00
committed by GitHub
parent 15c253117d
commit a5fe710cc6
20 changed files with 555 additions and 58 deletions
+9 -3
View File
@@ -26,6 +26,7 @@ use futures::{
};
use polkadot_node_subsystem::{
errors::{ChainApiError, RuntimeApiError},
jaeger,
messages::{
AllMessages, CandidateBackingMessage, ChainApiMessage, ProvisionableData, ProvisionerInherentData,
ProvisionerMessage,
@@ -154,10 +155,12 @@ impl JobTrait for ProvisioningJob {
sender,
receiver,
);
let span = jaeger::hash_span(&relay_parent, "provisioner");
// it isn't necessary to break run_loop into its own function,
// but it's convenient to separate the concerns in this way
job.run_loop().await
job.run_loop(&span).await
}
.boxed()
}
@@ -183,15 +186,15 @@ impl ProvisioningJob {
}
}
async fn run_loop(mut self) -> Result<(), Error> {
async fn run_loop(mut self, span: &jaeger::JaegerSpan) -> Result<(), Error> {
use ProvisionerMessage::{
ProvisionableData, RequestBlockAuthorshipData, RequestInherentData,
};
loop {
futures::select! {
msg = self.receiver.next().fuse() => match msg {
Some(RequestInherentData(_, return_sender)) => {
let _span = span.child("req inherent data");
let _timer = self.metrics.time_request_inherent_data();
if self.inherent_after.is_ready() {
@@ -201,9 +204,11 @@ impl ProvisioningJob {
}
}
Some(RequestBlockAuthorshipData(_, sender)) => {
let _span = span.child("req block authorship");
self.provisionable_data_channels.push(sender)
}
Some(ProvisionableData(_, data)) => {
let _span = span.child("provisionable data");
let _timer = self.metrics.time_provisionable_data();
let mut bad_indices = Vec::new();
@@ -241,6 +246,7 @@ impl ProvisioningJob {
None => break,
},
_ = self.inherent_after.ready().fuse() => {
let _span = span.child("send inherent data");
let return_senders = std::mem::take(&mut self.awaiting_inherent);
if !return_senders.is_empty() {
self.send_inherent_data(return_senders).await;