mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-14 18:32:42 +00:00
Reprocess an ExecutedBlock on unavailable blobs
This commit is contained in:
@@ -297,11 +297,6 @@ pub enum StateSkipConfig {
|
||||
WithoutStateRoots,
|
||||
}
|
||||
|
||||
pub enum BlockProcessingResult<T: BeaconChainTypes> {
|
||||
Verified(Hash256),
|
||||
AvailabilityPending(ExecutedBlock<T::EthSpec>),
|
||||
}
|
||||
|
||||
pub trait BeaconChainTypes: Send + Sync + 'static {
|
||||
type HotStore: store::ItemStore<Self::EthSpec>;
|
||||
type ColdStore: store::ItemStore<Self::EthSpec>;
|
||||
@@ -2669,10 +2664,14 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
||||
/// Returns `Ok(block_root)` if the given `unverified_block` was successfully verified and
|
||||
/// imported into the chain.
|
||||
///
|
||||
/// For post deneb blocks, this returns a `BlockError::AvailabilityPending` error
|
||||
/// if the corresponding blobs are not in the required caches.
|
||||
///
|
||||
/// Items that implement `IntoExecutionPendingBlock` include:
|
||||
///
|
||||
/// - `SignedBeaconBlock`
|
||||
/// - `GossipVerifiedBlock`
|
||||
/// - `BlockWrapper`
|
||||
///
|
||||
/// ## Errors
|
||||
///
|
||||
@@ -2691,7 +2690,6 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
||||
// Increment the Prometheus counter for block processing requests.
|
||||
metrics::inc_counter(&metrics::BLOCK_PROCESSING_REQUESTS);
|
||||
|
||||
let slot = unverified_block.block().slot();
|
||||
let chain = self.clone();
|
||||
|
||||
let execution_pending = unverified_block.into_execution_pending_block(
|
||||
@@ -2818,7 +2816,7 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
||||
///
|
||||
/// An error is returned if the block was unable to be imported. It may be partially imported
|
||||
/// (i.e., this function is not atomic).
|
||||
async fn check_availability_and_maybe_import(
|
||||
pub async fn check_availability_and_maybe_import(
|
||||
self: &Arc<Self>,
|
||||
cache_fn: impl FnOnce(Arc<Self>) -> Result<Availability<T::EthSpec>, AvailabilityCheckError>,
|
||||
count_unrealized: CountUnrealized,
|
||||
|
||||
@@ -686,6 +686,12 @@ pub struct ExecutedBlock<E: EthSpec> {
|
||||
pub payload_verification_outcome: PayloadVerificationOutcome,
|
||||
}
|
||||
|
||||
impl<E: EthSpec> std::fmt::Debug for ExecutedBlock<E> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:?}", self.block)
|
||||
}
|
||||
}
|
||||
|
||||
/// Implemented on types that can be converted into a `ExecutionPendingBlock`.
|
||||
///
|
||||
/// Used to allow functions to accept blocks at various stages of verification.
|
||||
|
||||
Reference in New Issue
Block a user