Skip to content

Commit 60c4234

Browse files
committed
gbn: use a prefixed logger
Instead of manually needing to insert "isServer=" everywhere.
1 parent 01d21d3 commit 60c4234

File tree

5 files changed

+91
-62
lines changed

5 files changed

+91
-62
lines changed

gbn/gbn_client.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,15 @@ handshake:
108108
}
109109

110110
// Send SYN
111-
log.Debugf("Client sending SYN")
111+
g.log.Debugf("Sending SYN")
112112
if err := g.sendToStream(g.ctx, msgBytes); err != nil {
113113
return err
114114
}
115115

116116
for {
117117
// Wait for SYN
118-
log.Debugf("Client waiting for SYN")
118+
g.log.Debugf("Waiting for SYN")
119+
119120
select {
120121
case recvNext <- 1:
121122
case <-g.quit:
@@ -128,7 +129,9 @@ handshake:
128129
var b []byte
129130
select {
130131
case <-time.After(g.handshakeTimeout):
131-
log.Debugf("SYN resendTimeout. Resending SYN.")
132+
g.log.Debugf("SYN resendTimeout. Resending " +
133+
"SYN.")
134+
132135
continue handshake
133136
case <-g.quit:
134137
return nil
@@ -144,7 +147,8 @@ handshake:
144147
return err
145148
}
146149

147-
log.Debugf("Client got %T", resp)
150+
g.log.Debugf("Got %T", resp)
151+
148152
switch r := resp.(type) {
149153
case *PacketSYN:
150154
respSYN = r
@@ -159,14 +163,14 @@ handshake:
159163
}
160164
}
161165

162-
log.Debugf("Client got SYN")
166+
g.log.Debugf("Got SYN")
163167

164168
if respSYN.N != g.n {
165169
return io.EOF
166170
}
167171

168172
// Send SYNACK
169-
log.Debugf("Client sending SYNACK")
173+
g.log.Debugf("Sending SYNACK")
170174
synack, err := new(PacketSYNACK).Serialize()
171175
if err != nil {
172176
return err
@@ -176,7 +180,7 @@ handshake:
176180
return err
177181
}
178182

179-
log.Debugf("Client Handshake complete")
183+
g.log.Debugf("Handshake complete")
180184

181185
return nil
182186
}

gbn/gbn_conn.go

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import (
88
"math"
99
"sync"
1010
"time"
11+
12+
"github.com/btcsuite/btclog"
13+
"github.com/lightningnetwork/lnd/build"
1114
)
1215

1316
var (
@@ -75,7 +78,7 @@ type GoBackNConn struct {
7578
recvTimeout time.Duration
7679
recvTimeoutMu sync.RWMutex
7780

78-
isServer bool
81+
log btclog.Logger
7982

8083
// handshakeTimeout is the time after which the server or client
8184
// will abort and restart the handshake if the expected response is
@@ -118,6 +121,14 @@ func newGoBackNConn(ctx context.Context, sendFunc sendBytesFunc,
118121

119122
ctxc, cancel := context.WithCancel(ctx)
120123

124+
// Construct a new prefixed logger.
125+
identifier := "client"
126+
if isServer {
127+
identifier = "server"
128+
}
129+
prefix := fmt.Sprintf("(%s)", identifier)
130+
plog := build.NewPrefixLog(prefix, log)
131+
121132
return &GoBackNConn{
122133
n: n,
123134
s: n + 1,
@@ -126,8 +137,7 @@ func newGoBackNConn(ctx context.Context, sendFunc sendBytesFunc,
126137
sendToStream: sendFunc,
127138
recvDataChan: make(chan *PacketData, n),
128139
sendDataChan: make(chan *PacketData),
129-
isServer: isServer,
130-
sendQueue: newQueue(n+1, defaultHandshakeTimeout),
140+
sendQueue: newQueue(n+1, defaultHandshakeTimeout, plog),
131141
handshakeTimeout: defaultHandshakeTimeout,
132142
recvTimeout: DefaultRecvTimeout,
133143
sendTimeout: DefaultSendTimeout,
@@ -136,6 +146,7 @@ func newGoBackNConn(ctx context.Context, sendFunc sendBytesFunc,
136146
remoteClosed: make(chan struct{}),
137147
ctx: ctxc,
138148
cancel: cancel,
149+
log: plog,
139150
quit: make(chan struct{}),
140151
}
141152
}
@@ -146,7 +157,7 @@ func (g *GoBackNConn) setN(n uint8) {
146157
g.n = n
147158
g.s = n + 1
148159
g.recvDataChan = make(chan *PacketData, n)
149-
g.sendQueue = newQueue(n+1, defaultHandshakeTimeout)
160+
g.sendQueue = newQueue(n+1, defaultHandshakeTimeout, g.log)
150161
}
151162

152163
// SetSendTimeout sets the timeout used in the Send function.
@@ -262,7 +273,7 @@ func (g *GoBackNConn) Recv() ([]byte, error) {
262273
// start kicks off the various goroutines needed by GoBackNConn.
263274
// start should only be called once the handshake has been completed.
264275
func (g *GoBackNConn) start() {
265-
log.Debugf("Starting (isServer=%v)", g.isServer)
276+
g.log.Debugf("Starting")
266277

267278
pingTime := time.Duration(math.MaxInt64)
268279
if g.pingTime != 0 {
@@ -286,43 +297,43 @@ func (g *GoBackNConn) start() {
286297
defer func() {
287298
g.wg.Done()
288299
if err := g.Close(); err != nil {
289-
log.Errorf("error closing GoBackNConn: %v", err)
300+
g.log.Errorf("error closing GoBackNConn: %v",
301+
err)
290302
}
291303
}()
292304

293305
err := g.receivePacketsForever()
294306
if err != nil {
295-
log.Debugf("Error in receivePacketsForever "+
296-
"(isServer=%v): %v", g.isServer, err)
307+
g.log.Debugf("Error in receivePacketsForever: %v", err)
297308
}
298-
log.Debugf("receivePacketsForever stopped (isServer=%v)",
299-
g.isServer)
309+
310+
g.log.Debugf("receivePacketsForever stopped")
300311
}()
301312

302313
g.wg.Add(1)
303314
go func() {
304315
defer func() {
305316
g.wg.Done()
306317
if err := g.Close(); err != nil {
307-
log.Errorf("error closing GoBackNConn: %v", err)
318+
g.log.Errorf("error closing GoBackNConn: %v",
319+
err)
308320
}
309321
}()
310322

311323
err := g.sendPacketsForever()
312324
if err != nil {
313-
log.Debugf("Error in sendPacketsForever "+
314-
"(isServer=%v): %v", g.isServer, err)
325+
g.log.Debugf("Error in sendPacketsForever: %v", err)
315326

316327
}
317-
log.Debugf("sendPacketsForever stopped (isServer=%v)",
318-
g.isServer)
328+
329+
g.log.Debugf("sendPacketsForever stopped")
319330
}()
320331
}
321332

322333
// Close attempts to cleanly close the connection by sending a FIN message.
323334
func (g *GoBackNConn) Close() error {
324335
g.closeOnce.Do(func() {
325-
log.Debugf("Closing GoBackNConn, isServer=%v", g.isServer)
336+
g.log.Debugf("Closing GoBackNConn")
326337

327338
// We close the quit channel to stop the usual operations of the
328339
// server.
@@ -333,13 +344,14 @@ func (g *GoBackNConn) Close() error {
333344
select {
334345
case <-g.remoteClosed:
335346
default:
336-
log.Tracef("Try sending FIN, isServer=%v", g.isServer)
347+
g.log.Tracef("Try sending FIN")
348+
337349
ctxc, cancel := context.WithTimeout(
338350
g.ctx, finSendTimeout,
339351
)
340352
defer cancel()
341353
if err := g.sendPacket(ctxc, &PacketFIN{}); err != nil {
342-
log.Errorf("Error sending FIN: %v", err)
354+
g.log.Errorf("Error sending FIN: %v", err)
343355
}
344356
}
345357

@@ -357,7 +369,7 @@ func (g *GoBackNConn) Close() error {
357369
g.resendTicker.Stop()
358370
}
359371

360-
log.Debugf("GBN is closed, isServer=%v", g.isServer)
372+
g.log.Debugf("GBN is closed")
361373
})
362374

363375
return nil
@@ -420,8 +432,7 @@ func (g *GoBackNConn) sendPacketsForever() error {
420432
g.pongTicker.Reset()
421433
g.pongTicker.Resume()
422434

423-
log.Tracef("Sending a PING packet (isServer=%v)",
424-
g.isServer)
435+
g.log.Tracef("Sending a PING packet")
425436

426437
packet = &PacketData{
427438
IsPing: true,
@@ -437,7 +448,7 @@ func (g *GoBackNConn) sendPacketsForever() error {
437448
// send.
438449
g.sendQueue.addPacket(packet)
439450

440-
log.Tracef("Sending data %d", packet.Seq)
451+
g.log.Tracef("Sending data %d", packet.Seq)
441452
if err := g.sendPacket(g.ctx, packet); err != nil {
442453
return err
443454
}
@@ -449,7 +460,7 @@ func (g *GoBackNConn) sendPacketsForever() error {
449460
break
450461
}
451462

452-
log.Tracef("The queue is full.")
463+
g.log.Tracef("The queue is full.")
453464

454465
// The queue is full. We wait for a ACKs to arrive or
455466
// resend the queue after a timeout.
@@ -516,7 +527,7 @@ func (g *GoBackNConn) receivePacketsForever() error { // nolint:gocyclo
516527
// an ACK message with that sequence number
517528
// and we bump the sequence number that we
518529
// expect of the next data packet.
519-
log.Tracef("Got expected data %d", m.Seq)
530+
g.log.Tracef("Got expected data %d", m.Seq)
520531

521532
ack := &PacketACK{
522533
Seq: m.Seq,
@@ -551,7 +562,7 @@ func (g *GoBackNConn) receivePacketsForever() error { // nolint:gocyclo
551562
// it could be that we missed a previous packet.
552563
// In either case, we send a NACK with the
553564
// sequence number that we were expecting.
554-
log.Tracef("Got unexpected data %d", m.Seq)
565+
g.log.Tracef("Got unexpected data %d", m.Seq)
555566

556567
// If we recently sent a NACK for the same
557568
// sequence number then back off.
@@ -561,7 +572,7 @@ func (g *GoBackNConn) receivePacketsForever() error { // nolint:gocyclo
561572
continue
562573
}
563574

564-
log.Tracef("Sending NACK %d", g.recvSeq)
575+
g.log.Tracef("Sending NACK %d", g.recvSeq)
565576

566577
// Send a NACK with the expected sequence
567578
// number.
@@ -603,9 +614,9 @@ func (g *GoBackNConn) receivePacketsForever() error { // nolint:gocyclo
603614
// then we ignore it. We must have received the ACK
604615
// for the sequence number in the meantime.
605616
if !inQueue {
606-
log.Tracef("NACK seq %d is not in the queue. "+
607-
"Ignoring. (isServer=%v)", m.Seq,
608-
g.isServer)
617+
g.log.Tracef("NACK seq %d is not in the "+
618+
"queue. Ignoring", m.Seq)
619+
609620
continue
610621
}
611622

@@ -618,8 +629,7 @@ func (g *GoBackNConn) receivePacketsForever() error { // nolint:gocyclo
618629
}
619630
}
620631

621-
log.Tracef("Sending a resend signal (isServer=%v)",
622-
g.isServer)
632+
g.log.Tracef("Sending a resend signal")
623633

624634
// Send a signal to indicate that new sends should pause
625635
// and the current queue should be resent instead.
@@ -631,16 +641,15 @@ func (g *GoBackNConn) receivePacketsForever() error { // nolint:gocyclo
631641
case *PacketFIN:
632642
// A FIN packet indicates that the peer would like to
633643
// close the connection.
634-
635-
log.Tracef("Received a FIN packet (isServer=%v)",
636-
g.isServer)
644+
g.log.Tracef("Received a FIN packet (isServer=%v)")
637645

638646
close(g.remoteClosed)
639647

640648
return errTransportClosing
641649

642650
default:
643-
return fmt.Errorf("received unexpected message: %T", msg)
651+
return fmt.Errorf("received unexpected message: %T",
652+
msg)
644653
}
645654
}
646655
}

0 commit comments

Comments
 (0)