Debug code
This commit is contained in:
parent
8cf55981bc
commit
016861124a
|
@ -291,6 +291,21 @@ func (r *resourceManager) OpenConnection(dir network.Direction, usefd bool, endp
|
||||||
var conn *connectionScope
|
var conn *connectionScope
|
||||||
conn = newConnectionScope(dir, usefd, r.limits.GetConnLimits(), r, endpoint)
|
conn = newConnectionScope(dir, usefd, r.limits.GetConnLimits(), r, endpoint)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
now := time.Now()
|
||||||
|
for {
|
||||||
|
if time.Now().After(now.Add(600 * time.Second)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
time.Sleep(20 * time.Second)
|
||||||
|
stat := conn.Stat()
|
||||||
|
if !conn.done && stat.Memory == 0 {
|
||||||
|
// We've always reserved a token amount of memory in swarm. So if we're here. that means we're leaking connection reservations.
|
||||||
|
fmt.Println("Conn stat for", endpoint, ":\n", "streams inbound:", stat.NumStreamsInbound, "streams outbound:", stat.NumStreamsOutbound, "memory:", stat.Memory, "conns in/out", stat.NumConnsInbound, "/", stat.NumConnsOutbound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
err := conn.AddConn(dir, usefd)
|
err := conn.AddConn(dir, usefd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Try again if this is an allowlisted connection
|
// Try again if this is an allowlisted connection
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
package rcmgr
|
package rcmgr
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/libp2p/go-libp2p/core/network"
|
"github.com/libp2p/go-libp2p/core/network"
|
||||||
"github.com/libp2p/go-libp2p/core/peer"
|
"github.com/libp2p/go-libp2p/core/peer"
|
||||||
"github.com/libp2p/go-libp2p/core/protocol"
|
"github.com/libp2p/go-libp2p/core/protocol"
|
||||||
"github.com/libp2p/go-libp2p/core/test"
|
"github.com/libp2p/go-libp2p/core/test"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/multiformats/go-multiaddr"
|
"github.com/multiformats/go-multiaddr"
|
||||||
)
|
)
|
||||||
|
@ -1051,3 +1053,32 @@ func TestResourceManagerWithAllowlist(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCleanupConns(t *testing.T) {
|
||||||
|
rcmgr, err := NewResourceManager(NewFixedLimiter(DefaultLimits.AutoScale()))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer rcmgr.Close()
|
||||||
|
|
||||||
|
// A connection comes in from a non-allowlisted ip address
|
||||||
|
conns := make([]network.ConnManagementScope, 0, 100)
|
||||||
|
for i := 0; i < 100; i++ {
|
||||||
|
conn, err := rcmgr.OpenConnection(network.DirInbound, true, multiaddr.StringCast("/ip4/1.2.3.5"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
conns = append(conns, conn)
|
||||||
|
}
|
||||||
|
rcmgr.ViewSystem(func(rs network.ResourceScope) error {
|
||||||
|
fmt.Println(rs.Stat())
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
for _, conn := range conns {
|
||||||
|
conn.Done()
|
||||||
|
}
|
||||||
|
|
||||||
|
rcmgr.ViewSystem(func(rs network.ResourceScope) error {
|
||||||
|
fmt.Println(rs.Stat())
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -499,6 +499,8 @@ func (s *Swarm) dialAddr(ctx context.Context, p peer.ID, addr ma.Multiaddr) (tra
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
canonicallog.LogPeerStatus(100, connC.RemotePeer(), connC.RemoteMultiaddr(), "connection_status", "established", "dir", "outbound")
|
canonicallog.LogPeerStatus(100, connC.RemotePeer(), connC.RemoteMultiaddr(), "connection_status", "established", "dir", "outbound")
|
||||||
|
// Token memory reservation for debugging
|
||||||
|
connC.Scope().ReserveMemory(1, 255)
|
||||||
if s.metricsTracer != nil {
|
if s.metricsTracer != nil {
|
||||||
connState := connC.ConnState()
|
connState := connC.ConnState()
|
||||||
s.metricsTracer.OpenedConnection(network.DirOutbound, connC.RemotePublicKey(), connState)
|
s.metricsTracer.OpenedConnection(network.DirOutbound, connC.RemotePublicKey(), connState)
|
||||||
|
|
|
@ -130,6 +130,8 @@ func (s *Swarm) AddListenAddr(a ma.Multiaddr) error {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
canonicallog.LogPeerStatus(100, c.RemotePeer(), c.RemoteMultiaddr(), "connection_status", "established", "dir", "inbound")
|
canonicallog.LogPeerStatus(100, c.RemotePeer(), c.RemoteMultiaddr(), "connection_status", "established", "dir", "inbound")
|
||||||
|
// Token memory reservation for debugging
|
||||||
|
c.Scope().ReserveMemory(1, 255)
|
||||||
if s.metricsTracer != nil {
|
if s.metricsTracer != nil {
|
||||||
s.metricsTracer.OpenedConnection(network.DirInbound, c.RemotePublicKey(), c.ConnState())
|
s.metricsTracer.OpenedConnection(network.DirInbound, c.RemotePublicKey(), c.ConnState())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue