Implement beacon_blocks_by_head (#9237)

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
This commit is contained in:
Lion - dapplion
2026-05-06 20:41:01 -06:00
committed by GitHub
parent 31e5f308c3
commit 7148bfcdd1
14 changed files with 637 additions and 8 deletions

View File

@@ -431,6 +431,7 @@ pub enum Work<E: EthSpec> {
Status(BlockingFn),
BlocksByRangeRequest(AsyncFn),
BlocksByRootsRequest(AsyncFn),
BlocksByHeadRequest(AsyncFn),
PayloadEnvelopesByRangeRequest(AsyncFn),
PayloadEnvelopesByRootRequest(AsyncFn),
BlobsByRangeRequest(BlockingFn),
@@ -491,6 +492,7 @@ pub enum WorkType {
Status,
BlocksByRangeRequest,
BlocksByRootsRequest,
BlocksByHeadRequest,
PayloadEnvelopesByRangeRequest,
PayloadEnvelopesByRootRequest,
BlobsByRangeRequest,
@@ -553,6 +555,7 @@ impl<E: EthSpec> Work<E> {
Work::Status(_) => WorkType::Status,
Work::BlocksByRangeRequest(_) => WorkType::BlocksByRangeRequest,
Work::BlocksByRootsRequest(_) => WorkType::BlocksByRootsRequest,
Work::BlocksByHeadRequest(_) => WorkType::BlocksByHeadRequest,
Work::PayloadEnvelopesByRangeRequest(_) => WorkType::PayloadEnvelopesByRangeRequest,
Work::PayloadEnvelopesByRootRequest(_) => WorkType::PayloadEnvelopesByRootRequest,
Work::BlobsByRangeRequest(_) => WorkType::BlobsByRangeRequest,
@@ -1000,6 +1003,8 @@ impl<E: EthSpec> BeaconProcessor<E> {
Some(item)
} else if let Some(item) = work_queues.block_broots_queue.pop() {
Some(item)
} else if let Some(item) = work_queues.block_bhead_queue.pop() {
Some(item)
} else if let Some(item) = work_queues.blob_brange_queue.pop() {
Some(item)
} else if let Some(item) = work_queues.blob_broots_queue.pop() {
@@ -1206,6 +1211,9 @@ impl<E: EthSpec> BeaconProcessor<E> {
Work::BlocksByRootsRequest { .. } => {
work_queues.block_broots_queue.push(work, work_id)
}
Work::BlocksByHeadRequest { .. } => {
work_queues.block_bhead_queue.push(work, work_id)
}
Work::PayloadEnvelopesByRangeRequest { .. } => work_queues
.payload_envelopes_brange_queue
.push(work, work_id),
@@ -1331,6 +1339,7 @@ impl<E: EthSpec> BeaconProcessor<E> {
WorkType::Status => work_queues.status_queue.len(),
WorkType::BlocksByRangeRequest => work_queues.block_brange_queue.len(),
WorkType::BlocksByRootsRequest => work_queues.block_broots_queue.len(),
WorkType::BlocksByHeadRequest => work_queues.block_bhead_queue.len(),
WorkType::PayloadEnvelopesByRangeRequest => {
work_queues.payload_envelopes_brange_queue.len()
}
@@ -1531,6 +1540,7 @@ impl<E: EthSpec> BeaconProcessor<E> {
}
Work::BlocksByRangeRequest(work)
| Work::BlocksByRootsRequest(work)
| Work::BlocksByHeadRequest(work)
| Work::PayloadEnvelopesByRangeRequest(work)
| Work::PayloadEnvelopesByRootRequest(work) => task_spawner.spawn_async(work),
Work::ChainSegmentBackfill(process_fn) => {