Skip to content

Commit bbb8612

Browse files
authored
api, metrics, network: check caps when deciding on next peer for a chunk (ethersphere#1749)
1 parent a5adcc3 commit bbb8612

File tree

5 files changed

+12
-8
lines changed

5 files changed

+12
-8
lines changed

api/inspector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (i *Inspector) DeliveriesPerPeer() map[string]int64 {
6969
// iterate connection in kademlia
7070
i.hive.Kademlia.EachConn(nil, 255, func(p *network.Peer, po int) bool {
7171
// get how many chunks we receive for retrieve requests per peer
72-
peermetric := fmt.Sprintf("chunk.delivery.%x", p.Over()[:16])
72+
peermetric := fmt.Sprintf("network.retrieve.chunk.delivery.%x", p.Over()[:16])
7373

7474
res[fmt.Sprintf("%x", p.Over()[:16])] = metrics.GetOrRegisterCounter(peermetric, nil).Count()
7575

metrics/flags.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func datadirDiskUsage(path string, d time.Duration) {
121121
for range time.Tick(d) {
122122
bytes, err := dirSize(path)
123123
if err != nil {
124-
log.Warn("cannot get disk space", "err", err)
124+
log.Trace("cannot get disk space", "err", err)
125125
}
126126

127127
metrics.GetOrRegisterGauge("datadir.usage", nil).Update(bytes)

network/retrieval/retrieve.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,11 @@ func (r *Retrieval) findPeer(ctx context.Context, req *storage.Request) (retPeer
226226
r.kad.EachConn(req.Addr[:], 255, func(p *network.Peer, po int) bool {
227227
id := p.ID()
228228

229-
// skip light nodes
229+
if !p.HasCap(Spec.Name) {
230+
return true
231+
}
232+
233+
// skip light nodes, even though they support `bzz-retrieve` protocol
230234
if p.LightNode {
231235
return true
232236
}
@@ -410,11 +414,11 @@ FINDPEER:
410414

411415
protoPeer := r.getPeer(sp.ID())
412416
if protoPeer == nil {
413-
r.logger.Warn("findPeer returned a peer to skip", "peer", sp.String(), "retry", retries)
417+
r.logger.Warn("findPeer returned a peer to skip", "peer", sp.String(), "retry", retries, "ref", req.Addr)
414418
req.PeersToSkip.Store(sp.ID().String(), time.Now())
415419
retries++
416420
if retries == maxFindPeerRetries {
417-
r.logger.Error("max find peer retries reached", "max retries", maxFindPeerRetries)
421+
r.logger.Error("max find peer retries reached", "max retries", maxFindPeerRetries, "ref", req.Addr)
418422
return nil, ErrNoPeerFound
419423
}
420424

network/retrieval/retrieve_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ func TestRequestFromPeers(t *testing.T) {
233233

234234
addr := network.RandomAddr()
235235
to := network.NewKademlia(addr.OAddr, network.NewKadParams())
236-
protocolsPeer := protocols.NewPeer(p2p.NewPeer(dummyPeerID, "dummy", nil), nil, nil)
236+
protocolsPeer := protocols.NewPeer(p2p.NewPeer(dummyPeerID, "dummy", []p2p.Cap{{Name: "bzz-retrieve", Version: 1}}), nil, nil)
237237
peer := network.NewPeer(&network.BzzPeer{
238238
BzzAddr: network.RandomAddr(),
239239
LightNode: false,
@@ -262,7 +262,7 @@ func TestRequestFromPeersWithLightNode(t *testing.T) {
262262
addr := network.RandomAddr()
263263
to := network.NewKademlia(addr.OAddr, network.NewKadParams())
264264

265-
protocolsPeer := protocols.NewPeer(p2p.NewPeer(dummyPeerID, "dummy", nil), nil, nil)
265+
protocolsPeer := protocols.NewPeer(p2p.NewPeer(dummyPeerID, "dummy", []p2p.Cap{{Name: "bzz-retrieve", Version: 1}}), nil, nil)
266266

267267
// setting up a lightnode
268268
peer := network.NewPeer(&network.BzzPeer{

storage/netstore.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ func (n *NetStore) RemoteFetch(ctx context.Context, req *Request, fi *Fetcher) e
264264
osp.Finish()
265265
break
266266
case <-ctx.Done(): // global fetcher timeout
267-
n.logger.Trace("remote.fetch, fail", "ref", ref)
267+
n.logger.Warn("remote.fetch, global timeout fail", "ref", ref)
268268
metrics.GetOrRegisterCounter("remote.fetch.timeout.global", nil).Inc(1)
269269

270270
osp.LogFields(olog.Bool("fail", true))

0 commit comments

Comments
 (0)