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
3bc9b675a03622273f8b33ee5856a164df871371
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
+}