Commit 0503716f authored by Peter Mrekaj's avatar Peter Mrekaj Committed by GitHub

refactor(kademlia): add peers at start asynchronously (#2082)

parent b68d0418
......@@ -9,7 +9,6 @@ import (
random "crypto/rand"
"encoding/json"
"errors"
"fmt"
"math"
"math/big"
"math/bits"
......@@ -570,12 +569,25 @@ func (k *Kad) Start(_ context.Context) error {
k.wg.Add(1)
go k.manage()
addresses, err := k.addressBook.Overlays()
if err != nil {
return fmt.Errorf("addressbook overlays: %w", err)
}
go func() {
select {
case <-k.halt:
return
case <-k.quit:
return
default:
}
start := time.Now()
addresses, err := k.addressBook.Overlays()
if err != nil {
k.logger.Errorf("addressbook overlays: %w", err)
return
}
k.AddPeers(addresses...)
k.metrics.StartAddAddressBookOverlaysTime.Observe(float64(time.Since(start).Nanoseconds()))
}()
k.AddPeers(addresses...)
return nil
}
......
......@@ -807,6 +807,8 @@ func TestAddressBookQuickPrune(t *testing.T) {
}
defer kad.Close()
time.Sleep(100 * time.Millisecond)
nonConnPeer, err := bzz.NewAddress(signer, nonConnectableAddress, test.RandomAddressAt(base, 1), 0)
if err != nil {
t.Fatal(err)
......
......@@ -26,6 +26,7 @@ type metrics struct {
TotalOutboundConnectionAttempts prometheus.Counter
TotalOutboundConnectionFailedAttempts prometheus.Counter
TotalBootNodesConnectionAttempts prometheus.Counter
StartAddAddressBookOverlaysTime prometheus.Histogram
}
// newMetrics is a convenient constructor for creating new metrics.
......@@ -122,7 +123,14 @@ func newMetrics() metrics {
Subsystem: subsystem,
Name: "total_bootnodes_connection_attempts",
Help: "Total boot-nodes connection attempts made.",
})}
}),
StartAddAddressBookOverlaysTime: prometheus.NewHistogram(prometheus.HistogramOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "start_add_addressbook_overlays_time",
Help: "The time spent adding overlays peers from addressbook on kademlia start.",
}),
}
}
// Metrics returns set of prometheus collectors.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment