diff --git a/core/corehttp/metrics.go b/core/corehttp/metrics.go index e7f36113bda..c3dbde0ac01 100644 --- a/core/corehttp/metrics.go +++ b/core/corehttp/metrics.go @@ -160,9 +160,18 @@ func (c IpfsNodeCollector) PeersTotalValues() map[string]float64 { if c.Node.PeerHost == nil { return vals } - for _, conn := range c.Node.PeerHost.Network().Conns() { + for _, peerID := range c.Node.PeerHost.Network().Peers() { + // Each peer may have more than one connection (see for an explanation + // https://github.com/libp2p/go-libp2p-swarm/commit/0538806), so we grab + // only one, the first (an arbitrary and non-deterministic choice), which + // according to ConnsToPeer is the oldest connection in the list + // (https://github.com/libp2p/go-libp2p-swarm/blob/v0.2.6/swarm.go#L362-L364). + conns := c.Node.PeerHost.Network().ConnsToPeer(peerID) + if len(conns) == 0 { + continue + } tr := "" - for _, proto := range conn.RemoteMultiaddr().Protocols() { + for _, proto := range conns[0].RemoteMultiaddr().Protocols() { tr = tr + "/" + proto.Name } vals[tr] = vals[tr] + 1 diff --git a/core/corehttp/metrics_test.go b/core/corehttp/metrics_test.go index dc3b68bc945..76f79d2ee2d 100644 --- a/core/corehttp/metrics_test.go +++ b/core/corehttp/metrics_test.go @@ -44,11 +44,13 @@ func TestPeersTotal(t *testing.T) { node := &core.IpfsNode{PeerHost: hosts[0]} collector := IpfsNodeCollector{Node: node} - actual := collector.PeersTotalValues() - if len(actual) != 1 { - t.Fatalf("expected 1 peers transport, got %d, transport map %v", len(actual), actual) + peersTransport := collector.PeersTotalValues() + if len(peersTransport) > 2 { + t.Fatalf("expected at most 2 peers transport (tcp and upd/quic), got %d, transport map %v", + len(peersTransport), peersTransport) } - if actual["/ip4/tcp"] != float64(3) { - t.Fatalf("expected 3 peers, got %f", actual["/ip4/tcp"]) + totalPeers := peersTransport["/ip4/tcp"] + peersTransport["/ip4/udp/quic"] + if totalPeers != 3 { + t.Fatalf("expected 3 peers in either tcp or upd/quic transport, got %f", totalPeers) } } diff --git a/go.mod b/go.mod index 9480df873fc..4a737f32670 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/ipfs/go-datastore v0.5.1 github.com/ipfs/go-detect-race v0.0.1 github.com/ipfs/go-ds-badger v0.3.0 - github.com/ipfs/go-ds-flatfs v0.5.0 + github.com/ipfs/go-ds-flatfs v0.5.1 github.com/ipfs/go-ds-leveldb v0.5.0 github.com/ipfs/go-ds-measure v0.2.0 github.com/ipfs/go-fetcher v1.6.1 diff --git a/go.sum b/go.sum index 02764d2397a..ea3efa17218 100644 --- a/go.sum +++ b/go.sum @@ -441,8 +441,8 @@ github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBR github.com/ipfs/go-ds-badger v0.2.7/go.mod h1:02rnztVKA4aZwDuaRPTf8mpqcKmXP7mLl6JPxd14JHA= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= -github.com/ipfs/go-ds-flatfs v0.5.0 h1:ntq2P05cC51VOSZ0VO/HRaCoLefVXNKGRu9gYr9Ajko= -github.com/ipfs/go-ds-flatfs v0.5.0/go.mod h1:RWTV7oZD/yZYBKdbVIFXTX2fdY2Tbvl94NsWqmoyAX4= +github.com/ipfs/go-ds-flatfs v0.5.1 h1:ZCIO/kQOS/PSh3vcF1H6a8fkRGS7pOfwfPdx4n/KJH4= +github.com/ipfs/go-ds-flatfs v0.5.1/go.mod h1:RWTV7oZD/yZYBKdbVIFXTX2fdY2Tbvl94NsWqmoyAX4= github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= github.com/ipfs/go-ds-leveldb v0.1.0/go.mod h1:hqAW8y4bwX5LWcCtku2rFNX3vjDZCy5LZCg+cSZvYb8= github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= diff --git a/version.go b/version.go index e5090fba081..ed70e1c4a00 100644 --- a/version.go +++ b/version.go @@ -4,7 +4,7 @@ package ipfs var CurrentCommit string // CurrentVersionNumber is the current application's version literal -const CurrentVersionNumber = "0.11.0-rc1" +const CurrentVersionNumber = "0.11.0-rc2" const ApiVersion = "/go-ipfs/" + CurrentVersionNumber + "/"