mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 04:37:13 +00:00
Resolve merge conflicts
This commit is contained in:
@@ -962,7 +962,7 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
|
||||
match &result {
|
||||
Ok(AvailabilityProcessingStatus::Imported(block_root)) => {
|
||||
info!(
|
||||
debug!(
|
||||
%block_root,
|
||||
"Gossipsub blob processed - imported fully available block"
|
||||
);
|
||||
@@ -1035,7 +1035,7 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
match &result {
|
||||
Ok(availability) => match availability {
|
||||
AvailabilityProcessingStatus::Imported(block_root) => {
|
||||
info!(
|
||||
debug!(
|
||||
%block_root,
|
||||
"Gossipsub data column processed, imported fully available block"
|
||||
);
|
||||
@@ -2742,6 +2742,20 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
}
|
||||
}
|
||||
}
|
||||
AttnError::SszTypesError(_) => {
|
||||
error!(
|
||||
%peer_id,
|
||||
block = ?beacon_block_root,
|
||||
?attestation_type,
|
||||
"Rejecting attestation due to a critical SSZ types error"
|
||||
);
|
||||
self.propagate_validation_result(message_id, peer_id, MessageAcceptance::Reject);
|
||||
self.gossip_penalize_peer(
|
||||
peer_id,
|
||||
PeerAction::MidToleranceError,
|
||||
"attn_ssz_types_error",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
debug!(
|
||||
|
||||
@@ -497,9 +497,11 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
self: &Arc<Self>,
|
||||
batch_id: CustodyBackfillBatchId,
|
||||
data_columns: DataColumnSidecarList<T::EthSpec>,
|
||||
expected_cgc: u64,
|
||||
) -> Result<(), Error<T::EthSpec>> {
|
||||
let processor = self.clone();
|
||||
let process_fn = move || processor.process_historic_data_columns(batch_id, data_columns);
|
||||
let process_fn =
|
||||
move || processor.process_historic_data_columns(batch_id, data_columns, expected_cgc);
|
||||
|
||||
let work = Work::ChainSegmentBackfill(Box::new(process_fn));
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ use lighthouse_tracing::{
|
||||
};
|
||||
use methods::LightClientUpdatesByRangeRequest;
|
||||
use slot_clock::SlotClock;
|
||||
use std::collections::{HashMap, hash_map::Entry};
|
||||
use std::collections::{HashMap, HashSet, hash_map::Entry};
|
||||
use std::sync::Arc;
|
||||
use tokio_stream::StreamExt;
|
||||
use tracing::{Span, debug, error, field, instrument, warn};
|
||||
@@ -293,6 +293,9 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
inbound_request_id: InboundRequestId,
|
||||
request: BlobsByRootRequest,
|
||||
) -> Result<(), (RpcErrorResponse, &'static str)> {
|
||||
let requested_roots: HashSet<Hash256> =
|
||||
request.blob_ids.iter().map(|id| id.block_root).collect();
|
||||
|
||||
let mut send_blob_count = 0;
|
||||
|
||||
let fulu_start_slot = self
|
||||
@@ -379,7 +382,7 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
|
||||
debug!(
|
||||
%peer_id,
|
||||
block_root = ?slots_by_block_root.keys(),
|
||||
?requested_roots,
|
||||
returned = send_blob_count,
|
||||
"BlobsByRoot outgoing response processed"
|
||||
);
|
||||
|
||||
@@ -426,6 +426,7 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
&self,
|
||||
batch_id: CustodyBackfillBatchId,
|
||||
downloaded_columns: DataColumnSidecarList<T::EthSpec>,
|
||||
expected_cgc: u64,
|
||||
) {
|
||||
let _guard = debug_span!(
|
||||
SPAN_CUSTODY_BACKFILL_SYNC_IMPORT_COLUMNS,
|
||||
@@ -435,10 +436,11 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
|
||||
.entered();
|
||||
|
||||
let sent_columns = downloaded_columns.len();
|
||||
let result = match self
|
||||
.chain
|
||||
.import_historical_data_column_batch(batch_id.epoch, downloaded_columns)
|
||||
{
|
||||
let result = match self.chain.import_historical_data_column_batch(
|
||||
batch_id.epoch,
|
||||
downloaded_columns,
|
||||
expected_cgc,
|
||||
) {
|
||||
Ok(imported_columns) => {
|
||||
metrics::inc_counter_by(
|
||||
&metrics::BEACON_PROCESSOR_CUSTODY_BACKFILL_COLUMN_IMPORT_SUCCESS_TOTAL,
|
||||
|
||||
@@ -8,7 +8,7 @@ use lighthouse_network::{
|
||||
},
|
||||
};
|
||||
use std::{collections::HashMap, sync::Arc};
|
||||
use tracing::Span;
|
||||
use tracing::{Span, debug};
|
||||
use types::{
|
||||
BlobSidecar, ChainSpec, ColumnIndex, DataColumnSidecar, DataColumnSidecarList, EthSpec,
|
||||
Hash256, RuntimeVariableList, SignedBeaconBlock,
|
||||
@@ -323,10 +323,10 @@ impl<E: EthSpec> RangeBlockComponentsRequest<E> {
|
||||
// if accumulated sidecars is not empty, log an error but return the responses
|
||||
// as we can still make progress.
|
||||
if blob_iter.next().is_some() {
|
||||
tracing::debug!(
|
||||
remaining_blobs=?blob_iter.collect::<Vec<_>>(),
|
||||
"Received sidecars that don't pair well",
|
||||
);
|
||||
let remaining_blobs = blob_iter
|
||||
.map(|b| (b.index, b.block_root()))
|
||||
.collect::<Vec<_>>();
|
||||
debug!(?remaining_blobs, "Received sidecars that don't pair well",);
|
||||
}
|
||||
|
||||
Ok(responses)
|
||||
@@ -517,11 +517,10 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn no_blobs_into_responses() {
|
||||
let spec = test_spec::<E>();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let blocks = (0..4)
|
||||
.map(|_| {
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng, &spec)
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng)
|
||||
.0
|
||||
.into()
|
||||
})
|
||||
@@ -540,19 +539,13 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn empty_blobs_into_responses() {
|
||||
let spec = test_spec::<E>();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let blocks = (0..4)
|
||||
.map(|_| {
|
||||
// Always generate some blobs.
|
||||
generate_rand_block_and_blobs::<E>(
|
||||
ForkName::Deneb,
|
||||
NumBlobs::Number(3),
|
||||
&mut rng,
|
||||
&spec,
|
||||
)
|
||||
.0
|
||||
.into()
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Deneb, NumBlobs::Number(3), &mut rng)
|
||||
.0
|
||||
.into()
|
||||
})
|
||||
.collect::<Vec<Arc<SignedBeaconBlock<E>>>>();
|
||||
|
||||
|
||||
@@ -382,11 +382,9 @@ impl<T: BeaconChainTypes> CustodyBackFillSync<T> {
|
||||
return None;
|
||||
};
|
||||
|
||||
let mut missing_columns = HashSet::new();
|
||||
|
||||
// Skip all batches (Epochs) that don't have missing columns.
|
||||
for epoch in Epoch::range_inclusive_rev(self.to_be_downloaded, column_da_boundary) {
|
||||
missing_columns = self.beacon_chain.get_missing_columns_for_epoch(epoch);
|
||||
let missing_columns = self.beacon_chain.get_missing_columns_for_epoch(epoch);
|
||||
|
||||
if !missing_columns.is_empty() {
|
||||
self.to_be_downloaded = epoch;
|
||||
@@ -445,6 +443,7 @@ impl<T: BeaconChainTypes> CustodyBackFillSync<T> {
|
||||
self.include_next_batch()
|
||||
}
|
||||
Entry::Vacant(entry) => {
|
||||
let missing_columns = self.beacon_chain.get_missing_columns_for_epoch(batch_id);
|
||||
entry.insert(BatchInfo::new(
|
||||
&batch_id,
|
||||
CUSTODY_BACKFILL_EPOCHS_PER_BATCH,
|
||||
@@ -504,6 +503,7 @@ impl<T: BeaconChainTypes> CustodyBackFillSync<T> {
|
||||
run_id: self.run_id,
|
||||
},
|
||||
data_columns,
|
||||
self.cgc,
|
||||
) {
|
||||
crit!(
|
||||
msg = "process_batch",
|
||||
|
||||
@@ -70,16 +70,17 @@ impl<T: BeaconChainTypes> RangeDataColumnBatchRequest<T> {
|
||||
HashMap::new();
|
||||
let mut column_to_peer_id: HashMap<u64, PeerId> = HashMap::new();
|
||||
|
||||
for column in self
|
||||
.requests
|
||||
.values()
|
||||
.filter_map(|req| req.to_finished())
|
||||
.flatten()
|
||||
{
|
||||
received_columns_for_slot
|
||||
.entry(column.slot())
|
||||
.or_default()
|
||||
.push(column.clone());
|
||||
for req in self.requests.values() {
|
||||
let Some(columns) = req.to_finished() else {
|
||||
return None;
|
||||
};
|
||||
|
||||
for column in columns {
|
||||
received_columns_for_slot
|
||||
.entry(column.slot())
|
||||
.or_default()
|
||||
.push(column.clone());
|
||||
}
|
||||
}
|
||||
|
||||
// Note: this assumes that only 1 peer is responsible for a column
|
||||
|
||||
@@ -194,7 +194,7 @@ impl TestRig {
|
||||
) -> (SignedBeaconBlock<E>, Vec<BlobSidecar<E>>) {
|
||||
let fork_name = self.fork_name;
|
||||
let rng = &mut self.rng;
|
||||
generate_rand_block_and_blobs::<E>(fork_name, num_blobs, rng, &self.spec)
|
||||
generate_rand_block_and_blobs::<E>(fork_name, num_blobs, rng)
|
||||
}
|
||||
|
||||
fn rand_block_and_data_columns(
|
||||
@@ -1146,10 +1146,8 @@ impl TestRig {
|
||||
|
||||
#[test]
|
||||
fn stable_rng() {
|
||||
let spec = types::MainnetEthSpec::default_spec();
|
||||
let mut rng = XorShiftRng::from_seed([42; 16]);
|
||||
let (block, _) =
|
||||
generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng, &spec);
|
||||
let (block, _) = generate_rand_block_and_blobs::<E>(ForkName::Base, NumBlobs::None, &mut rng);
|
||||
assert_eq!(
|
||||
block.canonical_root(),
|
||||
Hash256::from_slice(
|
||||
|
||||
Reference in New Issue
Block a user