p2p/net/conn: log conn lifetime event
Juan Batiz-Benet committed
Jan 30, 2015 at 21:59 UTC
7c7ec14109317d47e207987a355aa22c5741df23
1 file changed
+12
-2
p2p/net/conn/conn.go
+12
-2
@@ -2,6 +2,7 @@ package conn
2
3
import (
4
"fmt"
5
+ "io"
6
"net"
7
"time"
8
@@ -15,7 +16,7 @@ import (
16
peer "github.com/jbenet/go-ipfs/p2p/peer"
17
eventlog "github.com/jbenet/go-ipfs/thirdparty/eventlog"
18
u "github.com/jbenet/go-ipfs/util"
18
- debugerr "github.com/jbenet/go-ipfs/util/debugerror"
19
+ lgbl "github.com/jbenet/go-ipfs/util/eventlog/loggables"
20
)
21
22
var log = eventlog.Logger("conn")
@@ -33,16 +34,19 @@ type singleConn struct {
34
remote peer.ID
35
maconn manet.Conn
36
msgrw msgio.ReadWriteCloser
37
+ event io.Closer
38
}
39
40
// newConn constructs a new connection
41
func newSingleConn(ctx context.Context, local, remote peer.ID, maconn manet.Conn) (Conn, error) {
42
+ ml := lgbl.Dial("conn", local, remote, maconn.LocalMultiaddr(), maconn.RemoteMultiaddr())
43
44
conn := &singleConn{
45
local: local,
46
remote: remote,
47
maconn: maconn,
48
msgrw: msgio.NewReadWriter(maconn),
49
+ event: log.EventBegin(ctx, "connLifetime", ml),
50
}
51
52
log.Debugf("newSingleConn %p: %v to %v", conn, local, remote)
@@ -51,7 +55,13 @@ func newSingleConn(ctx context.Context, local, remote peer.ID, maconn manet.Conn
55
56
// close is the internal close function, called by ContextCloser.Close
57
func (c *singleConn) Close() error {
54
- log.Debug(debugerr.Errorf("%s closing Conn with %s", c.local, c.remote))
58
+ defer func() {
59
+ if c.event != nil {
60
+ c.event.Close()
61
+ c.event = nil
62
+ }
63
+ }()
64
+
65
// close underlying connection
66
return c.msgrw.Close()
67
}