Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
baea488
ci: initial fuzzer job
Mar 12, 2021
5b4c169
erasure-coding: update fuzzer Cargo.lock
Mar 12, 2021
2a2b8e3
syntax fix
Mar 12, 2021
68485a2
try this first
Mar 12, 2021
9e18f14
install honggfuzz deps
Mar 12, 2021
2a14d38
try not
Mar 12, 2021
007e345
try if else
Mar 12, 2021
091dcf0
try SIGINT
Mar 13, 2021
be927b2
ignore hfuzz dirs
Mar 13, 2021
0549076
???
Mar 13, 2021
7ca6f2b
bash is growing on me
Mar 13, 2021
225da3d
decouple builds from running
Mar 13, 2021
ec489f5
fix a typo
Mar 13, 2021
8a11653
try copying dirs
Mar 13, 2021
d0cea26
fix indentation
Mar 13, 2021
695cc0d
try using absolute paths
Mar 13, 2021
2bd647c
another try
Mar 13, 2021
8174515
caching is not worth it
Mar 13, 2021
6701361
remove outdated needs
Mar 13, 2021
d1e58a4
cleanup and add futher TODOs
Mar 13, 2021
c3bd79c
Update .github/workflows/honggfuzz.yml
Mar 15, 2021
48a7832
more diagnostic logs for approval-voting (#2618)
rphmeier Mar 12, 2021
517b26c
Backing and collator protocol traces including para-id (#2620)
rphmeier Mar 14, 2021
2b26019
add tracing when no assignment in candidate selection (#2623)
rphmeier Mar 14, 2021
4078d11
New slots/auctions architecture (#2294)
gavofyork Mar 14, 2021
92165dd
update ring to 0.16.20 (#2626)
Mar 15, 2021
d2bb9f6
Remove TODO from substrate#2986 (#2628)
shawntabrizi Mar 15, 2021
b82964e
Companion for sub/8176 (#2622)
kianenigma Mar 16, 2021
326e7a7
Add /data symlink to Docker containers (#2627)
s3krit Mar 16, 2021
bcb8e98
Fix wrong deposit amount in council voters. (#2562)
kianenigma Mar 17, 2021
8661baf
re benchmark (#2630)
kianenigma Mar 17, 2021
8debc0a
Reduce number of active leaves at startup (#2631)
bkchr Mar 17, 2021
419b58b
yet another set of logging improvements (#2638)
rphmeier Mar 17, 2021
4c8c8d7
Polkadot companion for Substrate PR #7640 (Store multiple Justificati…
octol Mar 17, 2021
6c2f47b
Companion for Substrate#8386 (#2634)
bkchr Mar 17, 2021
04c5e29
Request based collation fetching (#2621)
eskimor Mar 18, 2021
ac84870
Companion for #8372 (Replace 'Module' with 'Pallet' in construct_runt…
shaunxw Mar 18, 2021
afcbfd3
integrate faster erasure code (#2608)
drahnr Mar 18, 2021
ccc1ac5
Update for the new substrate client API (#2570)
arkpar Mar 18, 2021
07674b0
Improve the logging (#2645)
bkchr Mar 18, 2021
6061fba
Don't accept incoming connections for collators (#2644)
eskimor Mar 19, 2021
86333c5
fix reconstruct fuzzer name
Mar 19, 2021
67e3cec
make script more robust
Mar 19, 2021
bc2155e
Merge branch 'master' into ao-ci-fuzzer-jobs
Mar 19, 2021
89cf1a6
Merge branch 'master' into ao-ci-fuzzer-jobs
Mar 19, 2021
9759cb6
REVERTME: test run
Mar 19, 2021
58375df
REVERTME: test run II
Mar 19, 2021
a5527ff
Revert "REVERTME: test run II"
Mar 19, 2021
a430eab
Revert "REVERTME: test run"
Mar 19, 2021
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
Prev Previous commit
Next Next commit
Backing and collator protocol traces including para-id (#2620)
* improve backing/provisioner spans

* span for collation requests

* add para_id to unbacked candidate spans

* differentiate validation-construction and find-assignment in selection

* better find-assignment spans

* organize unbacked-candidate spans directly under job root

* Update node/core/provisioner/src/lib.rs

Co-authored-by: Andronik Ordian <[email protected]>

Co-authored-by: Andronik Ordian <[email protected]>
  • Loading branch information
rphmeier and Andronik Ordian committed Mar 19, 2021
commit 517b26caf72095ef0fe0da3be5c3816fc17c1490
80 changes: 58 additions & 22 deletions node/core/backing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -417,8 +417,9 @@ async fn validate_and_make_available(
let v = {
let _span = span.as_ref().map(|s| {
s.child_builder("request-validation")
.with_pov(&pov)
.build()
.with_pov(&pov)
.with_para_id(candidate.descriptor().para_id)
.build()
});
request_candidate_validation(&mut tx_from, candidate.descriptor.clone(), pov.clone()).await?
};
Expand Down Expand Up @@ -611,6 +612,7 @@ impl CandidateBackingJob {
async fn validate_and_second(
&mut self,
parent_span: &jaeger::Span,
root_span: &jaeger::Span,
candidate: &CandidateReceipt,
pov: Arc<PoV>,
) -> Result<(), Error> {
Expand All @@ -623,7 +625,13 @@ impl CandidateBackingJob {
}

let candidate_hash = candidate.hash();
let span = self.get_unbacked_validation_child(parent_span, candidate_hash);
let mut span = self.get_unbacked_validation_child(
root_span,
candidate_hash,
candidate.descriptor().para_id,
);

span.as_mut().map(|s| s.add_follows_from(parent_span));

tracing::debug!(
target: LOG_TARGET,
Expand Down Expand Up @@ -745,17 +753,17 @@ impl CandidateBackingJob {
Ok(summary)
}

#[tracing::instrument(level = "trace", skip(self, span), fields(subsystem = LOG_TARGET))]
async fn process_msg(&mut self, span: &jaeger::Span, msg: CandidateBackingMessage) -> Result<(), Error> {
#[tracing::instrument(level = "trace", skip(self, root_span), fields(subsystem = LOG_TARGET))]
async fn process_msg(&mut self, root_span: &jaeger::Span, msg: CandidateBackingMessage) -> Result<(), Error> {
match msg {
CandidateBackingMessage::Second(_relay_parent, candidate, pov) => {
CandidateBackingMessage::Second(relay_parent, candidate, pov) => {
let _timer = self.metrics.time_process_second();

let span = span.child_builder("second")
let span = root_span.child_builder("second")
.with_stage(jaeger::Stage::CandidateBacking)
.with_pov(&pov)
.with_candidate(&candidate.hash())
.with_relay_parent(&_relay_parent)
.with_relay_parent(&relay_parent)
.build();

// Sanity check that candidate is from our assignment.
Expand All @@ -772,20 +780,20 @@ impl CandidateBackingJob {

if !self.issued_statements.contains(&candidate_hash) {
let pov = Arc::new(pov);
self.validate_and_second(&span, &candidate, pov).await?;
self.validate_and_second(&span, &root_span, &candidate, pov).await?;
}
}
}
CandidateBackingMessage::Statement(_relay_parent, statement) => {
let _timer = self.metrics.time_process_statement();
let span = span.child_builder("statement")
let span = root_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)?;
match self.maybe_validate_and_import(&span, statement).await {
match self.maybe_validate_and_import(&span, &root_span, statement).await {
Err(Error::ValidationFailed(_)) => return Ok(()),
Err(e) => return Err(e),
Ok(()) => (),
Expand Down Expand Up @@ -865,12 +873,17 @@ impl CandidateBackingJob {
async fn maybe_validate_and_import(
&mut self,
parent_span: &jaeger::Span,
root_span: &jaeger::Span,
statement: SignedFullStatement,
) -> Result<(), Error> {
if let Some(summary) = self.import_statement(&statement, parent_span).await? {
if let Statement::Seconded(_) = statement.payload() {
if Some(summary.group_id) == self.assignment {
let span = self.get_unbacked_validation_child(parent_span, summary.candidate);
let span = self.get_unbacked_validation_child(
root_span,
summary.candidate,
summary.group_id,
);

self.kick_off_validation_work(summary, span).await?;
}
Expand Down Expand Up @@ -910,20 +923,37 @@ impl CandidateBackingJob {
}

/// Insert or get the unbacked-span for the given candidate hash.
fn insert_or_get_unbacked_span(&mut self, parent_span: &jaeger::Span, hash: CandidateHash) -> Option<&jaeger::Span> {
fn insert_or_get_unbacked_span(
&mut self,
parent_span: &jaeger::Span,
hash: CandidateHash,
para_id: Option<ParaId>
) -> Option<&jaeger::Span> {
if !self.backed.contains(&hash) {
// only add if we don't consider this backed.
let span = self.unbacked_candidates.entry(hash).or_insert_with(|| {
parent_span.child_with_candidate("unbacked-candidate", &hash)
let s = parent_span.child_builder("unbacked-candidate").with_candidate(&hash);
let s = if let Some(para_id) = para_id {
s.with_para_id(para_id)
} else {
s
};

s.build()
});
Some(span)
} else {
None
}
}

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)
fn get_unbacked_validation_child(
&mut self,
parent_span: &jaeger::Span,
hash: CandidateHash,
para_id: ParaId,
) -> Option<jaeger::Span> {
self.insert_or_get_unbacked_span(parent_span, hash, Some(para_id))
.map(|span| {
span.child_builder("validation")
.with_candidate(&hash)
Expand All @@ -938,7 +968,7 @@ impl CandidateBackingJob {
hash: CandidateHash,
validator: ValidatorIndex,
) -> Option<jaeger::Span> {
self.insert_or_get_unbacked_span(parent_span, hash).map(|span| {
self.insert_or_get_unbacked_span(parent_span, hash, None).map(|span| {
span.child_builder("import-statement")
.with_candidate(&hash)
.with_validator_index(validator)
Expand Down Expand Up @@ -1055,8 +1085,7 @@ impl util::JobTrait for CandidateBackingJob {
};

drop(_span);
let _span = span.child("calc-validator-groups");

let mut assignments_span = span.child("compute-assignments");

let mut groups = HashMap::new();

Expand Down Expand Up @@ -1085,11 +1114,18 @@ impl util::JobTrait for CandidateBackingJob {
};

let (assignment, required_collator) = match assignment {
None => (None, None),
Some((assignment, required_collator)) => (Some(assignment), required_collator),
None => {
assignments_span.add_string_tag("assigned", "false");
(None, None)
}
Some((assignment, required_collator)) => {
assignments_span.add_string_tag("assigned", "true");
assignments_span.add_para_id(assignment);
(Some(assignment), required_collator)
}
};

drop(_span);
drop(assignments_span);
let _span = span.child("wait-for-job");

let (background_tx, background_rx) = mpsc::channel(16);
Expand Down
21 changes: 17 additions & 4 deletions node/core/candidate-selection/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ impl JobTrait for CandidateSelectionJob {
let cores = try_runtime_api!(cores);

drop(_span);
let _span = span.child_builder("find-assignment")
let _span = span.child_builder("validator-construction")
.with_relay_parent(&relay_parent)
.with_stage(jaeger::Stage::CandidateSelection)
.build();
Expand All @@ -134,6 +134,11 @@ impl JobTrait for CandidateSelectionJob {
Err(err) => return Err(Error::Util(err)),
};

let mut assignment_span = span.child_builder("find-assignment")
.with_relay_parent(&relay_parent)
.with_stage(jaeger::Stage::CandidateSelection)
.build();

let mut assignment = None;

for (idx, core) in cores.into_iter().enumerate() {
Expand All @@ -151,11 +156,19 @@ impl JobTrait for CandidateSelectionJob {
}

let assignment = match assignment {
Some(assignment) => assignment,
None => return Ok(()),
Some(assignment) => {
assignment_span.add_string_tag("assigned", "true");
assignment_span.add_para_id(assignment);

assignment
}
None => {
assignment_span.add_string_tag("assigned", "false");
return Ok(())
}
};

drop(_span);
drop(assignment_span);

CandidateSelectionJob::new(assignment, metrics, sender, receiver).run_loop(&span).await
}.boxed()
Expand Down
8 changes: 5 additions & 3 deletions node/core/provisioner/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,10 @@ impl ProvisioningJob {
}
}
Some(ProvisionableData(_, data)) => {
let _span = span.child("provisionable-data");
let span = span.child("provisionable-data");
let _timer = self.metrics.time_provisionable_data();

self.note_provisionable_data(data);
self.note_provisionable_data(&span, data);
}
None => break,
},
Expand Down Expand Up @@ -239,12 +239,14 @@ impl ProvisioningJob {
}

#[tracing::instrument(level = "trace", skip(self), fields(subsystem = LOG_TARGET))]
fn note_provisionable_data(&mut self, provisionable_data: ProvisionableData) {
fn note_provisionable_data(&mut self, span: &jaeger::Span, provisionable_data: ProvisionableData) {
match provisionable_data {
ProvisionableData::Bitfield(_, signed_bitfield) => {
self.signed_bitfields.push(signed_bitfield)
}
ProvisionableData::BackedCandidate(backed_candidate) => {
let mut span = span.child("provisionable-backed");
span.add_para_id(backed_candidate.descriptor().para_id);
self.backed_candidates.push(backed_candidate)
}
_ => {}
Expand Down
15 changes: 14 additions & 1 deletion node/jaeger/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
//! ```

use sp_core::traits::SpawnNamed;
use polkadot_primitives::v1::{CandidateHash, Hash, PoV, ValidatorIndex, BlakeTwo256, HashT};
use polkadot_primitives::v1::{CandidateHash, Hash, PoV, ValidatorIndex, BlakeTwo256, HashT, Id as ParaId};
use parity_scale_codec::Encode;
use sc_network::PeerId;

Expand Down Expand Up @@ -204,6 +204,14 @@ impl SpanBuilder {
self.span.add_string_tag("candidate-hash", &format!("{:?}", candidate_hash.0));
self
}

/// Attach a para-id to the span.
#[inline(always)]
pub fn with_para_id(mut self, para_id: ParaId) -> Self {
self.span.add_para_id(para_id);
self
}

/// Attach a candidate stage.
/// Should always come with a `CandidateHash`.
#[inline(always)]
Expand Down Expand Up @@ -305,6 +313,11 @@ impl Span {
}
}

/// Add the para-id to the span.
pub fn add_para_id(&mut self, para_id: ParaId) {
self.add_int_tag("para-id", u32::from(para_id) as i64);
}

/// Add an additional tag to the span.
pub fn add_string_tag(&mut self, tag: &str, value: &str) {
match self {
Expand Down
19 changes: 17 additions & 2 deletions node/network/collator-protocol/src/validator_side.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ struct CollationRequest {

// The id of this request.
request_id: RequestId,

// A jaeger span corresponding to the lifetime of the request.
span: Option<jaeger::Span>,
}

impl CollationRequest {
Expand All @@ -147,11 +150,18 @@ impl CollationRequest {
received,
timeout,
request_id,
mut span,
} = self;

match received.timeout(timeout).await {
None => Timeout(request_id),
Some(_) => Received(request_id),
None => {
span.as_mut().map(|s| s.add_string_tag("success", "false"));
Timeout(request_id)
}
Some(_) => {
span.as_mut().map(|s| s.add_string_tag("success", "true"));
Received(request_id)
}
}
}
}
Expand Down Expand Up @@ -466,6 +476,11 @@ where
received: rx,
timeout: state.request_timeout,
request_id,
span: state.span_per_relay_parent.get(&relay_parent).map(|s| {
s.child_builder("collation-request")
.with_para_id(para_id)
.build()
}),
};

state.requested_collations.insert((relay_parent, para_id.clone(), peer_id.clone()), request_id);
Expand Down