mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-10 04:01:51 +00:00
Serve rpc by range and by root:
This commit is contained in:
@@ -408,6 +408,8 @@ pub enum Work<E: EthSpec> {
|
||||
Status(BlockingFn),
|
||||
BlocksByRangeRequest(AsyncFn),
|
||||
BlocksByRootsRequest(AsyncFn),
|
||||
PayloadEnvelopesByRangeRequest(AsyncFn),
|
||||
PayloadEnvelopesByRootRequest(AsyncFn),
|
||||
BlobsByRangeRequest(BlockingFn),
|
||||
BlobsByRootsRequest(BlockingFn),
|
||||
DataColumnsByRootsRequest(BlockingFn),
|
||||
@@ -464,6 +466,8 @@ pub enum WorkType {
|
||||
Status,
|
||||
BlocksByRangeRequest,
|
||||
BlocksByRootsRequest,
|
||||
PayloadEnvelopesByRangeRequest,
|
||||
PayloadEnvelopesByRootRequest,
|
||||
BlobsByRangeRequest,
|
||||
BlobsByRootsRequest,
|
||||
DataColumnsByRootsRequest,
|
||||
@@ -522,6 +526,8 @@ impl<E: EthSpec> Work<E> {
|
||||
Work::Status(_) => WorkType::Status,
|
||||
Work::BlocksByRangeRequest(_) => WorkType::BlocksByRangeRequest,
|
||||
Work::BlocksByRootsRequest(_) => WorkType::BlocksByRootsRequest,
|
||||
Work::PayloadEnvelopesByRangeRequest(_) => WorkType::PayloadEnvelopesByRangeRequest,
|
||||
Work::PayloadEnvelopesByRootRequest(_) => WorkType::PayloadEnvelopesByRootRequest,
|
||||
Work::BlobsByRangeRequest(_) => WorkType::BlobsByRangeRequest,
|
||||
Work::BlobsByRootsRequest(_) => WorkType::BlobsByRootsRequest,
|
||||
Work::DataColumnsByRootsRequest(_) => WorkType::DataColumnsByRootsRequest,
|
||||
@@ -969,6 +975,12 @@ impl<E: EthSpec> BeaconProcessor<E> {
|
||||
Some(item)
|
||||
} else if let Some(item) = work_queues.dcbrange_queue.pop() {
|
||||
Some(item)
|
||||
} else if let Some(item) = work_queues.payload_envelopes_brange_queue.pop()
|
||||
{
|
||||
Some(item)
|
||||
} else if let Some(item) = work_queues.payload_envelopes_broots_queue.pop()
|
||||
{
|
||||
Some(item)
|
||||
// Check slashings after all other consensus messages so we prioritize
|
||||
// following head.
|
||||
//
|
||||
@@ -1155,6 +1167,12 @@ impl<E: EthSpec> BeaconProcessor<E> {
|
||||
Work::BlocksByRootsRequest { .. } => {
|
||||
work_queues.block_broots_queue.push(work, work_id)
|
||||
}
|
||||
Work::PayloadEnvelopesByRangeRequest { .. } => work_queues
|
||||
.payload_envelopes_brange_queue
|
||||
.push(work, work_id),
|
||||
Work::PayloadEnvelopesByRootRequest { .. } => work_queues
|
||||
.payload_envelopes_broots_queue
|
||||
.push(work, work_id),
|
||||
Work::BlobsByRangeRequest { .. } => {
|
||||
work_queues.blob_brange_queue.push(work, work_id)
|
||||
}
|
||||
@@ -1270,6 +1288,12 @@ 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::PayloadEnvelopesByRangeRequest => {
|
||||
work_queues.payload_envelopes_brange_queue.len()
|
||||
}
|
||||
WorkType::PayloadEnvelopesByRootRequest => {
|
||||
work_queues.payload_envelopes_broots_queue.len()
|
||||
}
|
||||
WorkType::BlobsByRangeRequest => work_queues.blob_brange_queue.len(),
|
||||
WorkType::BlobsByRootsRequest => work_queues.blob_broots_queue.len(),
|
||||
WorkType::DataColumnsByRootsRequest => work_queues.dcbroots_queue.len(),
|
||||
@@ -1456,9 +1480,10 @@ impl<E: EthSpec> BeaconProcessor<E> {
|
||||
| Work::DataColumnsByRangeRequest(process_fn) => {
|
||||
task_spawner.spawn_blocking(process_fn)
|
||||
}
|
||||
Work::BlocksByRangeRequest(work) | Work::BlocksByRootsRequest(work) => {
|
||||
task_spawner.spawn_async(work)
|
||||
}
|
||||
Work::BlocksByRangeRequest(work)
|
||||
| Work::BlocksByRootsRequest(work)
|
||||
| Work::PayloadEnvelopesByRangeRequest(work)
|
||||
| Work::PayloadEnvelopesByRootRequest(work) => task_spawner.spawn_async(work),
|
||||
Work::ChainSegmentBackfill(process_fn) => {
|
||||
if self.config.enable_backfill_rate_limiting {
|
||||
task_spawner.spawn_blocking_with_rayon(RayonPoolType::LowPriority, process_fn)
|
||||
|
||||
@@ -134,6 +134,8 @@ pub struct BeaconProcessorQueueLengths {
|
||||
blob_brange_queue: usize,
|
||||
dcbroots_queue: usize,
|
||||
dcbrange_queue: usize,
|
||||
payload_envelopes_brange_queue: usize,
|
||||
payload_envelopes_broots_queue: usize,
|
||||
gossip_bls_to_execution_change_queue: usize,
|
||||
gossip_execution_payload_queue: usize,
|
||||
gossip_execution_payload_bid_queue: usize,
|
||||
@@ -204,6 +206,8 @@ impl BeaconProcessorQueueLengths {
|
||||
blob_brange_queue: 1024,
|
||||
dcbroots_queue: 1024,
|
||||
dcbrange_queue: 1024,
|
||||
payload_envelopes_brange_queue: 1024,
|
||||
payload_envelopes_broots_queue: 1024,
|
||||
gossip_bls_to_execution_change_queue: 16384,
|
||||
// TODO(EIP-7732): verify 1024 is preferable. I used same value as `gossip_block_queue` and `gossip_blob_queue`
|
||||
gossip_execution_payload_queue: 1024,
|
||||
@@ -253,6 +257,8 @@ pub struct WorkQueues<E: EthSpec> {
|
||||
pub status_queue: FifoQueue<Work<E>>,
|
||||
pub block_brange_queue: FifoQueue<Work<E>>,
|
||||
pub block_broots_queue: FifoQueue<Work<E>>,
|
||||
pub payload_envelopes_brange_queue: FifoQueue<Work<E>>,
|
||||
pub payload_envelopes_broots_queue: FifoQueue<Work<E>>,
|
||||
pub blob_broots_queue: FifoQueue<Work<E>>,
|
||||
pub blob_brange_queue: FifoQueue<Work<E>>,
|
||||
pub dcbroots_queue: FifoQueue<Work<E>>,
|
||||
@@ -323,6 +329,10 @@ impl<E: EthSpec> WorkQueues<E> {
|
||||
let blob_brange_queue = FifoQueue::new(queue_lengths.blob_brange_queue);
|
||||
let dcbroots_queue = FifoQueue::new(queue_lengths.dcbroots_queue);
|
||||
let dcbrange_queue = FifoQueue::new(queue_lengths.dcbrange_queue);
|
||||
let payload_envelopes_brange_queue =
|
||||
FifoQueue::new(queue_lengths.payload_envelopes_brange_queue);
|
||||
let payload_envelopes_broots_queue =
|
||||
FifoQueue::new(queue_lengths.payload_envelopes_broots_queue);
|
||||
|
||||
let gossip_bls_to_execution_change_queue =
|
||||
FifoQueue::new(queue_lengths.gossip_bls_to_execution_change_queue);
|
||||
@@ -382,6 +392,8 @@ impl<E: EthSpec> WorkQueues<E> {
|
||||
blob_brange_queue,
|
||||
dcbroots_queue,
|
||||
dcbrange_queue,
|
||||
payload_envelopes_brange_queue,
|
||||
payload_envelopes_broots_queue,
|
||||
gossip_bls_to_execution_change_queue,
|
||||
gossip_execution_payload_queue,
|
||||
gossip_execution_payload_bid_queue,
|
||||
|
||||
Reference in New Issue
Block a user