Implement Metadatav3 (#6303)

* Add a V3 variant for metadata

* Add v3 for requests; persistence logic

* Set custody_subnets on setting metadata

* Fix tests

* Address some comments

* fmt

* Address more comments

* Fix tests

* Update metadata rpc limits

* Update method doc.
This commit is contained in:
Pawan Dhananjay
2024-08-27 23:43:12 -07:00
committed by GitHub
parent f75a2cf65b
commit bcff4aa825
11 changed files with 226 additions and 60 deletions

View File

@@ -1,6 +1,7 @@
//! Implementation of Lighthouse's peer management system.
use crate::discovery::enr_ext::EnrExt;
use crate::discovery::peer_id_to_node_id;
use crate::rpc::{GoodbyeReason, MetaData, Protocol, RPCError, RPCResponseErrorCode};
use crate::service::TARGET_SUBNET_PEERS;
use crate::{error, metrics, Gossipsub};
@@ -716,7 +717,8 @@ impl<E: EthSpec> PeerManager<E> {
debug!(self.log, "Obtained peer's metadata";
"peer_id" => %peer_id, "new_seq_no" => meta_data.seq_number());
}
peer_info.set_meta_data(meta_data);
let node_id_opt = peer_id_to_node_id(peer_id).ok();
peer_info.set_meta_data(meta_data, node_id_opt, &self.network_globals.spec);
} else {
error!(self.log, "Received METADATA from an unknown peer";
"peer_id" => %peer_id);
@@ -1678,7 +1680,11 @@ mod tests {
.write()
.peer_info_mut(&peer0)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
peer_manager
.network_globals
.peers
@@ -1698,7 +1704,11 @@ mod tests {
.write()
.peer_info_mut(&peer2)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
peer_manager
.network_globals
.peers
@@ -1718,7 +1728,11 @@ mod tests {
.write()
.peer_info_mut(&peer4)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
peer_manager
.network_globals
.peers
@@ -1792,7 +1806,11 @@ mod tests {
.write()
.peer_info_mut(&peer)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
peer_manager
.network_globals
.peers
@@ -1916,7 +1934,11 @@ mod tests {
.write()
.peer_info_mut(&peer)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
let long_lived_subnets = peer_manager
.network_globals
.peers
@@ -2025,7 +2047,11 @@ mod tests {
.write()
.peer_info_mut(&peer)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
let long_lived_subnets = peer_manager
.network_globals
.peers
@@ -2191,7 +2217,11 @@ mod tests {
.write()
.peer_info_mut(&peer)
.unwrap()
.set_meta_data(MetaData::V2(metadata));
.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
let long_lived_subnets = peer_manager
.network_globals
.peers
@@ -2348,7 +2378,11 @@ mod tests {
let mut peer_db = peer_manager.network_globals.peers.write();
let peer_info = peer_db.peer_info_mut(&condition.peer_id).unwrap();
peer_info.set_meta_data(MetaData::V2(metadata));
peer_info.set_meta_data(
MetaData::V2(metadata),
None,
&peer_manager.network_globals.spec,
);
peer_info.set_gossipsub_score(condition.gossipsub_score);
peer_info.add_to_score(condition.score);