@cryptotaxi247 / kubo / commits / 2759a229c

fix: stats dht command when Routing.Type=auto (#9538)

Fixes default auto mode, but Routing.Type=custom needs more work. Continued in https://github.com/ipfs/kubo/issues/9482

Antonio Navarro Perez committed Jan 13, 2023 at 00:38 UTC 2759a229c709c1f9693610103906800f7e199c9a
6 files changed +51 -13
core/node/libp2p/routing.go
+21 -7
@@ -7,13 +7,9 @@ import (
7 "sort"
8 "time"
9
10 - "github.com/ipfs/kubo/core/node/helpers"
11 - irouting "github.com/ipfs/kubo/routing"
12 -
10 + "github.com/cenkalti/backoff/v4"
11 ds "github.com/ipfs/go-datastore"
12 offroute "github.com/ipfs/go-ipfs-routing/offline"
15 - config "github.com/ipfs/kubo/config"
16 - "github.com/ipfs/kubo/repo"
13 dht "github.com/libp2p/go-libp2p-kad-dht"
14 ddht "github.com/libp2p/go-libp2p-kad-dht/dual"
15 "github.com/libp2p/go-libp2p-kad-dht/fullrt"
@@ -24,9 +20,12 @@ import (
20 "github.com/libp2p/go-libp2p/core/host"
21 "github.com/libp2p/go-libp2p/core/peer"
22 "github.com/libp2p/go-libp2p/core/routing"
27 -
28 - "github.com/cenkalti/backoff/v4"
23 "go.uber.org/fx"
24 +
25 + config "github.com/ipfs/kubo/config"
26 + "github.com/ipfs/kubo/core/node/helpers"
27 + "github.com/ipfs/kubo/repo"
28 + irouting "github.com/ipfs/kubo/routing"
29 )
30
31 type Router struct {
@@ -77,6 +76,21 @@ func BaseRouting(experimentalDHTClient bool) interface{} {
76 })
77 }
78
79 + if pr, ok := in.Router.(routinghelpers.ComposableRouter); ok {
80 + for _, r := range pr.Routers() {
81 + if dht, ok := r.(*ddht.DHT); ok {
82 + dr = dht
83 + lc.Append(fx.Hook{
84 + OnStop: func(ctx context.Context) error {
85 + return dr.Close()
86 + },
87 + })
88 +
89 + break
90 + }
91 + }
92 + }
93 +
94 if dr != nil && experimentalDHTClient {
95 cfg, err := in.Repo.Config()
96 if err != nil {
docs/examples/kubo-as-a-library/go.mod
+1 -1
@@ -127,7 +127,7 @@ require (
127 github.com/libp2p/go-libp2p-pubsub v0.8.2 // indirect
128 github.com/libp2p/go-libp2p-pubsub-router v0.6.0 // indirect
129 github.com/libp2p/go-libp2p-record v0.2.0 // indirect
130 - github.com/libp2p/go-libp2p-routing-helpers v0.5.0 // indirect
130 + github.com/libp2p/go-libp2p-routing-helpers v0.6.0 // indirect
131 github.com/libp2p/go-libp2p-xor v0.1.0 // indirect
132 github.com/libp2p/go-mplex v0.7.0 // indirect
133 github.com/libp2p/go-msgio v0.2.0 // indirect
docs/examples/kubo-as-a-library/go.sum
+2 -2
@@ -793,8 +793,8 @@ github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqU
793 github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q=
794 github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0=
795 github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk=
796 -github.com/libp2p/go-libp2p-routing-helpers v0.5.0 h1:Byujua1X9MeTzbF54i5OwjUNopeg7PYBykuNow/w3p4=
797 -github.com/libp2p/go-libp2p-routing-helpers v0.5.0/go.mod h1:wwK/XSLt6njjO7sRbjhf8w7PGBOfdntMQ2mOQPZ5s/Q=
796 +github.com/libp2p/go-libp2p-routing-helpers v0.6.0 h1:Rfyd+wp/cU0PjNjCphGzLYzd7Q51fjOMs5Sjj6zWGT0=
797 +github.com/libp2p/go-libp2p-routing-helpers v0.6.0/go.mod h1:wwK/XSLt6njjO7sRbjhf8w7PGBOfdntMQ2mOQPZ5s/Q=
798 github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8=
799 github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g=
800 github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8=
go.mod
+1 -1
@@ -79,7 +79,7 @@ require (
79 github.com/libp2p/go-libp2p-pubsub v0.8.2
80 github.com/libp2p/go-libp2p-pubsub-router v0.6.0
81 github.com/libp2p/go-libp2p-record v0.2.0
82 - github.com/libp2p/go-libp2p-routing-helpers v0.5.0
82 + github.com/libp2p/go-libp2p-routing-helpers v0.6.0
83 github.com/libp2p/go-libp2p-testing v0.12.0
84 github.com/libp2p/go-socket-activation v0.1.0
85 github.com/miekg/dns v1.1.50
go.sum
+2 -2
@@ -828,8 +828,8 @@ github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqU
828 github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q=
829 github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0=
830 github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk=
831 -github.com/libp2p/go-libp2p-routing-helpers v0.5.0 h1:Byujua1X9MeTzbF54i5OwjUNopeg7PYBykuNow/w3p4=
832 -github.com/libp2p/go-libp2p-routing-helpers v0.5.0/go.mod h1:wwK/XSLt6njjO7sRbjhf8w7PGBOfdntMQ2mOQPZ5s/Q=
831 +github.com/libp2p/go-libp2p-routing-helpers v0.6.0 h1:Rfyd+wp/cU0PjNjCphGzLYzd7Q51fjOMs5Sjj6zWGT0=
832 +github.com/libp2p/go-libp2p-routing-helpers v0.6.0/go.mod h1:wwK/XSLt6njjO7sRbjhf8w7PGBOfdntMQ2mOQPZ5s/Q=
833 github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8=
834 github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g=
835 github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8=
test/cli/stats_test.go new
+24
@@ -0,0 +1,24 @@
1 +package cli
2 +
3 +import (
4 + "testing"
5 +
6 + "github.com/stretchr/testify/assert"
7 +
8 + "github.com/ipfs/kubo/test/cli/harness"
9 +)
10 +
11 +func TestStats(t *testing.T) {
12 + t.Parallel()
13 +
14 + t.Run("stats dht", func(t *testing.T) {
15 + t.Parallel()
16 + nodes := harness.NewT(t).NewNodes(2).Init().StartDaemons().Connect()
17 + node1 := nodes[0]
18 +
19 + res := node1.IPFS("stats", "dht")
20 + assert.NoError(t, res.Err)
21 + assert.Equal(t, 0, len(res.Stderr.Lines()))
22 + assert.NotEqual(t, 0, len(res.Stdout.Lines()))
23 + })
24 +}