Skip to content

Commit ee767ff

Browse files
committed
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>
1 parent 80b6b6e commit ee767ff

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

pkg/spegel/bootstrap.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,20 @@ func (s *serverBootstrapper) Get(ctx context.Context) ([]peer.AddrInfo, error) {
176176
if nodeName == "" {
177177
return nil, errors.New("node name not set")
178178
}
179+
179180
nodes := s.controlConfig.Runtime.Core.Core().V1().Node()
180-
labelSelector := labels.Set{P2pEnabledLabel: "true"}.String()
181-
nodeList, err := nodes.List(metav1.ListOptions{LabelSelector: labelSelector})
181+
if !nodes.Informer().HasSynced() {
182+
return nil, errors.New("node cache informer not synced")
183+
}
184+
185+
labelSelector := labels.Set{P2pEnabledLabel: "true"}.AsSelector()
186+
nodeList, err := nodes.Cache().List(labelSelector)
182187
if err != nil {
183188
return nil, err
184189
}
185190

186191
addrs := []peer.AddrInfo{}
187-
for _, node := range nodeList.Items {
192+
for _, node := range nodeList {
188193
if node.Name == nodeName {
189194
// don't return our own address
190195
continue

0 commit comments

Comments
 (0)