Add cache to spegel p2p peerinfo handler

libp2p may make a large number of bootstrap calls during startup; serve nodes from cache to avoid excessive CPU usage.

Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
pull/12179/head
Brad Davidson 2025-04-15 23:43:55 +00:00 committed by Brad Davidson
parent 11042804f3
commit bb3b1330de
1 changed files with 8 additions and 3 deletions

View File

@ -176,15 +176,20 @@ func (s *serverBootstrapper) Get(ctx context.Context) ([]peer.AddrInfo, error) {
if nodeName == "" {
return nil, errors.New("node name not set")
}
nodes := s.controlConfig.Runtime.Core.Core().V1().Node()
labelSelector := labels.Set{P2pEnabledLabel: "true"}.String()
nodeList, err := nodes.List(metav1.ListOptions{LabelSelector: labelSelector})
if !nodes.Informer().HasSynced() {
return nil, errors.New("node cache informer not synced")
}
labelSelector := labels.Set{P2pEnabledLabel: "true"}.AsSelector()
nodeList, err := nodes.Cache().List(labelSelector)
if err != nil {
return nil, err
}
addrs := []peer.AddrInfo{}
for _, node := range nodeList.Items {
for _, node := range nodeList {
if node.Name == nodeName {
// don't return our own address
continue