mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-17 12:58:31 +00:00
Correct the metrics for topic subscriptions (#5344)
* Handle fork boundaries * Merge latest unstable * Topic subscription fix
This commit is contained in:
@@ -18,9 +18,9 @@ use crate::rpc::*;
|
||||
use crate::service::behaviour::BehaviourEvent;
|
||||
pub use crate::service::behaviour::Gossipsub;
|
||||
use crate::types::{
|
||||
fork_core_topics, subnet_from_topic_hash, GossipEncoding, GossipKind, GossipTopic,
|
||||
SnappyTransform, Subnet, SubnetDiscovery, ALTAIR_CORE_TOPICS, BASE_CORE_TOPICS,
|
||||
CAPELLA_CORE_TOPICS, DENEB_CORE_TOPICS, LIGHT_CLIENT_GOSSIP_TOPICS,
|
||||
attestation_sync_committee_topics, fork_core_topics, subnet_from_topic_hash, GossipEncoding,
|
||||
GossipKind, GossipTopic, SnappyTransform, Subnet, SubnetDiscovery, ALTAIR_CORE_TOPICS,
|
||||
BASE_CORE_TOPICS, CAPELLA_CORE_TOPICS, DENEB_CORE_TOPICS, LIGHT_CLIENT_GOSSIP_TOPICS,
|
||||
};
|
||||
use crate::EnrExt;
|
||||
use crate::Eth2Enr;
|
||||
@@ -275,6 +275,22 @@ impl<AppReqId: ReqId, TSpec: EthSpec> Network<AppReqId, TSpec> {
|
||||
.with_peer_score(params, thresholds)
|
||||
.expect("Valid score params and thresholds");
|
||||
|
||||
// If we are using metrics, then register which topics we want to make sure to keep
|
||||
// track of
|
||||
if ctx.libp2p_registry.is_some() {
|
||||
let topics_to_keep_metrics_for = attestation_sync_committee_topics::<TSpec>()
|
||||
.map(|gossip_kind| {
|
||||
Topic::from(GossipTopic::new(
|
||||
gossip_kind,
|
||||
GossipEncoding::default(),
|
||||
enr_fork_id.fork_digest,
|
||||
))
|
||||
.into()
|
||||
})
|
||||
.collect::<Vec<TopicHash>>();
|
||||
gossipsub.register_topics_for_metrics(topics_to_keep_metrics_for);
|
||||
}
|
||||
|
||||
(gossipsub, update_gossipsub_scores)
|
||||
};
|
||||
|
||||
@@ -640,6 +656,20 @@ impl<AppReqId: ReqId, TSpec: EthSpec> Network<AppReqId, TSpec> {
|
||||
let topic = GossipTopic::new(kind, GossipEncoding::default(), new_fork_digest);
|
||||
self.subscribe(topic);
|
||||
}
|
||||
|
||||
// Register the new topics for metrics
|
||||
let topics_to_keep_metrics_for = attestation_sync_committee_topics::<TSpec>()
|
||||
.map(|gossip_kind| {
|
||||
Topic::from(GossipTopic::new(
|
||||
gossip_kind,
|
||||
GossipEncoding::default(),
|
||||
new_fork_digest,
|
||||
))
|
||||
.into()
|
||||
})
|
||||
.collect::<Vec<TopicHash>>();
|
||||
self.gossipsub_mut()
|
||||
.register_topics_for_metrics(topics_to_keep_metrics_for);
|
||||
}
|
||||
|
||||
/// Unsubscribe from all topics that doesn't have the given fork_digest
|
||||
|
||||
Reference in New Issue
Block a user