mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 06:21:11 +00:00
differentiate spans for erasure-coding and storage (#2185)
This commit is contained in:
committed by
GitHub
parent
2c1f43a989
commit
eefebc6cfc
@@ -288,7 +288,7 @@ async fn store_available_data(
|
|||||||
//
|
//
|
||||||
// This will compute the erasure root internally and compare it to the expected erasure root.
|
// This will compute the erasure root internally and compare it to the expected erasure root.
|
||||||
// This returns `Err()` iff there is an internal error. Otherwise, it returns either `Ok(Ok(()))` or `Ok(Err(_))`.
|
// This returns `Err()` iff there is an internal error. Otherwise, it returns either `Ok(Ok(()))` or `Ok(Err(_))`.
|
||||||
#[tracing::instrument(level = "trace", skip(tx_from, pov), fields(subsystem = LOG_TARGET))]
|
#[tracing::instrument(level = "trace", skip(tx_from, pov, span), fields(subsystem = LOG_TARGET))]
|
||||||
async fn make_pov_available(
|
async fn make_pov_available(
|
||||||
tx_from: &mut mpsc::Sender<FromJobCommand>,
|
tx_from: &mut mpsc::Sender<FromJobCommand>,
|
||||||
validator_index: Option<ValidatorIndex>,
|
validator_index: Option<ValidatorIndex>,
|
||||||
@@ -297,31 +297,39 @@ 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>,
|
||||||
) -> Result<Result<(), InvalidErasureRoot>, Error> {
|
) -> Result<Result<(), InvalidErasureRoot>, Error> {
|
||||||
let available_data = AvailableData {
|
let available_data = AvailableData {
|
||||||
pov,
|
pov,
|
||||||
validation_data,
|
validation_data,
|
||||||
};
|
};
|
||||||
|
|
||||||
let chunks = erasure_coding::obtain_chunks_v1(
|
{
|
||||||
n_validators,
|
let _span = span.as_ref().map(|s| s.child("erasure-coding"));
|
||||||
&available_data,
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let branches = erasure_coding::branches(chunks.as_ref());
|
let chunks = erasure_coding::obtain_chunks_v1(
|
||||||
let erasure_root = branches.root();
|
n_validators,
|
||||||
|
&available_data,
|
||||||
|
)?;
|
||||||
|
|
||||||
if erasure_root != expected_erasure_root {
|
let branches = erasure_coding::branches(chunks.as_ref());
|
||||||
return Ok(Err(InvalidErasureRoot));
|
let erasure_root = branches.root();
|
||||||
|
|
||||||
|
if erasure_root != expected_erasure_root {
|
||||||
|
return Ok(Err(InvalidErasureRoot));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
store_available_data(
|
{
|
||||||
tx_from,
|
let _span = span.as_ref().map(|s| s.child("store-data"));
|
||||||
validator_index,
|
store_available_data(
|
||||||
n_validators as u32,
|
tx_from,
|
||||||
candidate_hash,
|
validator_index,
|
||||||
available_data,
|
n_validators as u32,
|
||||||
).await?;
|
candidate_hash,
|
||||||
|
available_data,
|
||||||
|
).await?;
|
||||||
|
}
|
||||||
|
|
||||||
Ok(Ok(()))
|
Ok(Ok(()))
|
||||||
}
|
}
|
||||||
@@ -423,7 +431,6 @@ async fn validate_and_make_available(
|
|||||||
);
|
);
|
||||||
Err(candidate)
|
Err(candidate)
|
||||||
} else {
|
} else {
|
||||||
let _span = span.as_ref().map(|s| s.child("make-available"));
|
|
||||||
let erasure_valid = make_pov_available(
|
let erasure_valid = make_pov_available(
|
||||||
&mut tx_from,
|
&mut tx_from,
|
||||||
validator_index,
|
validator_index,
|
||||||
@@ -432,6 +439,7 @@ async fn validate_and_make_available(
|
|||||||
candidate.hash(),
|
candidate.hash(),
|
||||||
validation_data,
|
validation_data,
|
||||||
candidate.descriptor.erasure_root,
|
candidate.descriptor.erasure_root,
|
||||||
|
span.as_ref(),
|
||||||
).await?;
|
).await?;
|
||||||
|
|
||||||
match erasure_valid {
|
match erasure_valid {
|
||||||
|
|||||||
Reference in New Issue
Block a user