mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-15 02:42:38 +00:00
Retry custody requests after peer metadata updates (#6975)
Closes https://github.com/sigp/lighthouse/issues/6895 We need sync to retry custody requests when a peer CGC updates. A higher CGC can result in a data column subnet peer count increasing from 0 to 1, allowing requests to happen. Add new sync event `SyncMessage::UpdatedPeerCgc`. It's sent by the router when a metadata response updates the known CGC
This commit is contained in:
@@ -106,6 +106,9 @@ pub enum SyncMessage<E: EthSpec> {
|
||||
head_slot: Option<Slot>,
|
||||
},
|
||||
|
||||
/// Peer manager has received a MetaData of a peer with a new or updated CGC value.
|
||||
UpdatedPeerCgc(PeerId),
|
||||
|
||||
/// A block has been received from the RPC.
|
||||
RpcBlock {
|
||||
sync_request_id: SyncRequestId,
|
||||
@@ -476,6 +479,16 @@ impl<T: BeaconChainTypes> SyncManager<T> {
|
||||
}
|
||||
}
|
||||
|
||||
fn updated_peer_cgc(&mut self, _peer_id: PeerId) {
|
||||
// Try to make progress on custody requests that are waiting for peers
|
||||
for (id, result) in self.network.continue_custody_by_root_requests() {
|
||||
self.on_custody_by_root_result(id, result);
|
||||
}
|
||||
|
||||
// Attempt to resume range sync too
|
||||
self.range_sync.resume(&mut self.network);
|
||||
}
|
||||
|
||||
/// Handles RPC errors related to requests that were emitted from the sync manager.
|
||||
fn inject_error(&mut self, peer_id: PeerId, sync_request_id: SyncRequestId, error: RPCError) {
|
||||
trace!("Sync manager received a failed RPC");
|
||||
@@ -748,6 +761,13 @@ impl<T: BeaconChainTypes> SyncManager<T> {
|
||||
} => {
|
||||
self.add_peers_force_range_sync(&peers, head_root, head_slot);
|
||||
}
|
||||
SyncMessage::UpdatedPeerCgc(peer_id) => {
|
||||
debug!(
|
||||
peer_id = ?peer_id,
|
||||
"Received updated peer CGC message"
|
||||
);
|
||||
self.updated_peer_cgc(peer_id);
|
||||
}
|
||||
SyncMessage::RpcBlock {
|
||||
sync_request_id,
|
||||
peer_id,
|
||||
|
||||
Reference in New Issue
Block a user