## Issue Addressed Closes #2528 ## Proposed Changes - Add `BlockTimesCache` to provide block timing information to `BeaconChain`. This allows additional metrics to be calculated for blocks that are set as head too late. - Thread the `seen_timestamp` of blocks received from RPC responses (except blocks from syncing) through to the sync manager, similar to what is done for blocks from gossip. ## Additional Info This provides the following additional metrics: - `BEACON_BLOCK_OBSERVED_SLOT_START_DELAY_TIME` - The delay between the start of the slot and when the block was first observed. - `BEACON_BLOCK_IMPORTED_OBSERVED_DELAY_TIME` - The delay between when the block was first observed and when the block was imported. - `BEACON_BLOCK_HEAD_IMPORTED_DELAY_TIME` - The delay between when the block was imported and when the block was set as head. The metric `BEACON_BLOCK_IMPORTED_SLOT_START_DELAY_TIME` was removed. A log is produced when a block is set as head too late, e.g.: ``` Aug 27 03:46:39.006 DEBG Delayed head block set_as_head_delay: Some(21.731066ms), imported_delay: Some(119.929934ms), observed_delay: Some(3.864596988s), block_delay: 4.006257988s, slot: 1931331, proposer_index: 24294, block_root: 0x937602c89d3143afa89088a44bdf4b4d0d760dad082abacb229495c048648a9e, service: beacon ```
59 lines
1.8 KiB
Rust
59 lines
1.8 KiB
Rust
#![recursion_limit = "128"] // For lazy-static
|
|
pub mod attestation_verification;
|
|
mod attester_cache;
|
|
mod beacon_chain;
|
|
mod beacon_fork_choice_store;
|
|
mod beacon_proposer_cache;
|
|
mod beacon_snapshot;
|
|
mod block_times_cache;
|
|
mod block_verification;
|
|
pub mod builder;
|
|
pub mod chain_config;
|
|
mod errors;
|
|
pub mod eth1_chain;
|
|
pub mod events;
|
|
pub mod fork_revert;
|
|
mod head_tracker;
|
|
pub mod historical_blocks;
|
|
mod metrics;
|
|
pub mod migrate;
|
|
mod naive_aggregation_pool;
|
|
mod observed_aggregates;
|
|
mod observed_attesters;
|
|
mod observed_block_producers;
|
|
pub mod observed_operations;
|
|
mod persisted_beacon_chain;
|
|
mod persisted_fork_choice;
|
|
pub mod schema_change;
|
|
mod shuffling_cache;
|
|
mod snapshot_cache;
|
|
pub mod state_advance_timer;
|
|
pub mod sync_committee_verification;
|
|
pub mod test_utils;
|
|
mod timeout_rw_lock;
|
|
pub mod validator_monitor;
|
|
mod validator_pubkey_cache;
|
|
|
|
pub use self::beacon_chain::{
|
|
AttestationProcessingOutcome, BeaconChain, BeaconChainTypes, BeaconStore, ChainSegmentResult,
|
|
ForkChoiceError, StateSkipConfig, WhenSlotSkipped, MAXIMUM_GOSSIP_CLOCK_DISPARITY,
|
|
};
|
|
pub use self::beacon_snapshot::BeaconSnapshot;
|
|
pub use self::chain_config::ChainConfig;
|
|
pub use self::errors::{BeaconChainError, BlockProductionError};
|
|
pub use self::historical_blocks::HistoricalBlockError;
|
|
pub use attestation_verification::Error as AttestationError;
|
|
pub use beacon_fork_choice_store::{BeaconForkChoiceStore, Error as ForkChoiceStoreError};
|
|
pub use block_verification::{BlockError, GossipVerifiedBlock};
|
|
pub use eth1_chain::{Eth1Chain, Eth1ChainBackend};
|
|
pub use events::ServerSentEventHandler;
|
|
pub use metrics::scrape_for_metrics;
|
|
pub use parking_lot;
|
|
pub use slot_clock;
|
|
pub use state_processing::per_block_processing::errors::{
|
|
AttestationValidationError, AttesterSlashingValidationError, DepositValidationError,
|
|
ExitValidationError, ProposerSlashingValidationError,
|
|
};
|
|
pub use store;
|
|
pub use types;
|