Skip to content

Commit f471182

Browse files
committed
Tidy up cmd/torrent cleanup and websocket trackers logging
1 parent 2502dd2 commit f471182

File tree

10 files changed

+46
-25
lines changed

10 files changed

+46
-25
lines changed

client.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ func NewClient(cfg *ClientConfig) (cl *Client, err error) {
316316

317317
cl.websocketTrackers = websocketTrackers{
318318
PeerId: cl.peerID,
319-
Logger: cl.logger,
319+
Logger: cl.logger.WithNames("websocketTrackers"),
320320
GetAnnounceRequest: func(
321321
event tracker.AnnounceEvent, infoHash [20]byte,
322322
) (

cmd/torrent/download.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ func downloadErr(flags downloadFlags) error {
405405
<-ctx.Done()
406406
}
407407
}
408-
spew.Dump(expvar.Get("torrent").(*expvar.Map).Get("chunks received"))
408+
fmt.Printf("chunks received: %v\n", &torrent.ChunksReceived)
409409
spew.Dump(client.ConnStats())
410410
clStats := client.ConnStats()
411411
sentOverhead := clStats.BytesWritten.Int64() - clStats.BytesWrittenData.Int64()

cmd/torrent/main.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"context"
66
"encoding/json"
77
"fmt"
8+
app "github.com/anacrolix/gostdapp"
89
"io"
910
stdLog "log"
1011
"net/http"
@@ -39,12 +40,15 @@ func shutdownTracerProvider(ctx context.Context, tp *trace.TracerProvider) {
3940
}
4041

4142
func main() {
43+
app.RunContext(mainErr)
44+
}
45+
46+
func mainErr(ctx context.Context) error {
4247
defer stdLog.SetFlags(stdLog.Flags() | stdLog.Lshortfile)
4348

44-
ctx := context.Background()
4549
tracingExporter, err := otlptracegrpc.New(ctx)
4650
if err != nil {
47-
log.Fatalf("creating tracing exporter: %v", err)
51+
return fmt.Errorf("creating tracing exporter: %w", err)
4852
}
4953
tracerProvider := trace.NewTracerProvider(trace.WithBatcher(tracingExporter))
5054
defer shutdownTracerProvider(ctx, tracerProvider)
@@ -148,5 +152,8 @@ func main() {
148152
bargle.Subcommand{Name: "serve", Command: serve()},
149153
bargle.Subcommand{Name: "create", Command: create()},
150154
)
155+
// Well this sux, this old version of bargle doesn't return so we can let the gostdapp Context
156+
// clean up.
151157
main.Run()
158+
return nil
152159
}

global.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,17 @@ func defaultPeerExtensionBytes() PeerExtensionBits {
2525

2626
func init() {
2727
torrent.Set("peers supporting extension", &peersSupportingExtension)
28-
torrent.Set("chunks received", &chunksReceived)
28+
torrent.Set("chunks received", &ChunksReceived)
2929
}
3030

3131
// I could move a lot of these counters to their own file, but I suspect they
3232
// may be attached to a Client someday.
3333
var (
3434
torrent = expvar.NewMap("torrent")
3535
peersSupportingExtension expvar.Map
36-
chunksReceived expvar.Map
36+
// This could move at any time. It contains counts of chunks received and the conditions they
37+
// were received.
38+
ChunksReceived expvar.Map
3739

3840
pieceHashedCorrect = expvar.NewInt("pieceHashedCorrect")
3941
pieceHashedNotCorrect = expvar.NewInt("pieceHashedNotCorrect")

go.sum

-2
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ github.com/alexflint/go-scalar v1.1.0 h1:aaAouLLzI9TChcPXotr6gUhq+Scr8rl0P9P4Pnl
6666
github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=
6767
github.com/anacrolix/backtrace v0.0.0-20221205112523-22a61db8f82e h1:A0Ty9UeyBDIo29ZMnk0AvPqWDIa4HVvCaJqWNlCrMXA=
6868
github.com/anacrolix/backtrace v0.0.0-20221205112523-22a61db8f82e/go.mod h1:4YFqy+788tLJWtin2jNliYVJi+8aDejG9zcu/2/pONw=
69-
github.com/anacrolix/bargle v0.0.0-20220630015206-d7a4d433886a h1:KCP9QvHlLoUQBOaTf/YCuOzG91Ym1cPB6S68O4Q3puo=
70-
github.com/anacrolix/bargle v0.0.0-20220630015206-d7a4d433886a/go.mod h1:9xUiZbkh+94FbiIAL1HXpAIBa832f3Mp07rRPl5c5RQ=
7169
github.com/anacrolix/bargle v0.0.0-20221014000746-4f2739072e9d h1:ypNOsIwvdumNRlqWj/hsnLs5TyQWQOylwi+T9Qs454A=
7270
github.com/anacrolix/bargle v0.0.0-20221014000746-4f2739072e9d/go.mod h1:9xUiZbkh+94FbiIAL1HXpAIBa832f3Mp07rRPl5c5RQ=
7371
github.com/anacrolix/chansync v0.4.1-0.20240627045151-1aa1ac392fe8 h1:eyb0bBaQKMOh5Se/Qg54shijc8K4zpQiOjEhKFADkQM=

peer.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,7 @@ func (c *Peer) doChunkReadStats(size int64) {
608608

609609
// Handle a received chunk from a peer.
610610
func (c *Peer) receiveChunk(msg *pp.Message) error {
611-
chunksReceived.Add("total", 1)
611+
ChunksReceived.Add("total", 1)
612612

613613
ppReq := newRequestFromMessage(msg)
614614
t := c.t
@@ -628,17 +628,17 @@ func (c *Peer) receiveChunk(msg *pp.Message) error {
628628
defer recordBlockForSmartBan()
629629

630630
if c.peerChoking {
631-
chunksReceived.Add("while choked", 1)
631+
ChunksReceived.Add("while choked", 1)
632632
}
633633

634634
if c.validReceiveChunks[req] <= 0 {
635-
chunksReceived.Add("unexpected", 1)
635+
ChunksReceived.Add("unexpected", 1)
636636
return errors.New("received unexpected chunk")
637637
}
638638
c.decExpectedChunkReceive(req)
639639

640640
if c.peerChoking && c.peerAllowedFast.Contains(pieceIndex(ppReq.Index)) {
641-
chunksReceived.Add("due to allowed fast", 1)
641+
ChunksReceived.Add("due to allowed fast", 1)
642642
}
643643

644644
// The request needs to be deleted immediately to prevent cancels occurring asynchronously when
@@ -661,7 +661,7 @@ func (c *Peer) receiveChunk(msg *pp.Message) error {
661661
c.updateRequests("Peer.receiveChunk deleted request")
662662
}
663663
} else {
664-
chunksReceived.Add("unintended", 1)
664+
ChunksReceived.Add("unintended", 1)
665665
}
666666
}
667667

@@ -670,7 +670,7 @@ func (c *Peer) receiveChunk(msg *pp.Message) error {
670670
// Do we actually want this chunk?
671671
if t.haveChunk(ppReq) {
672672
// panic(fmt.Sprintf("%+v", ppReq))
673-
chunksReceived.Add("redundant", 1)
673+
ChunksReceived.Add("redundant", 1)
674674
c.allStats(add(1, func(cs *ConnStats) *Count { return &cs.ChunksReadWasted }))
675675
return nil
676676
}

torrent.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -1910,10 +1910,11 @@ func (t *Torrent) startWebsocketAnnouncer(u url.URL, shortInfohash [20]byte) tor
19101910
go func() {
19111911
err := wtc.Announce(tracker.Started, shortInfohash)
19121912
if err != nil {
1913-
t.logger.WithDefaultLevel(log.Warning).Printf(
1914-
"error in initial announce to %q: %v",
1915-
u.String(), err,
1916-
)
1913+
level := log.Warning
1914+
if t.closed.IsSet() {
1915+
level = log.Debug
1916+
}
1917+
t.logger.Levelf(level, "error doing initial announce to %q: %v", u.String(), err)
19171918
}
19181919
}()
19191920
return wst

webtorrent/tracker-client.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ func (tc *TrackerClient) Announce(event tracker.AnnounceEvent, infoHash [20]byte
234234
return fmt.Errorf("creating offer: %w", err)
235235
}
236236

237+
tc.Logger.Levelf(log.Debug, "announcing offer")
237238
err = tc.announce(event, infoHash, []outboundOffer{
238239
{
239240
offerId: offerIDBinary,
@@ -308,7 +309,7 @@ func (tc *TrackerClient) trackerReadLoop(tracker *websocket.Conn) error {
308309
if err != nil {
309310
return fmt.Errorf("read message error: %w", err)
310311
}
311-
// tc.Logger.WithDefaultLevel(log.Debug).Printf("received message from tracker: %q", message)
312+
tc.Logger.Levelf(log.Debug, "received message: %q", message)
312313

313314
var ar AnnounceResponse
314315
if err := json.Unmarshal(message, &ar); err != nil {
@@ -333,7 +334,13 @@ func (tc *TrackerClient) trackerReadLoop(tracker *websocket.Conn) error {
333334
case ar.Answer != nil:
334335
tc.handleAnswer(ar.OfferID, *ar.Answer)
335336
default:
336-
tc.Logger.Levelf(log.Warning, "unhandled announce response %q", message)
337+
// wss://tracker.openwebtorrent.com appears to respond to an initial announces without
338+
// an offer or answer. I think that's fine. Let's check it at least contains an
339+
// infohash.
340+
_, err := jsonStringToInfoHash(ar.InfoHash)
341+
if err != nil {
342+
tc.Logger.Levelf(log.Warning, "unexpected announce response %q", message)
343+
}
337344
}
338345
}
339346
}

webtorrent/transport.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func newPeerConnection(logger log.Logger, iceServers []webrtc.ICEServer) (*wrapp
7070
}
7171
// If the state change handler intends to call Close, it should call it on the wrapper.
7272
wpc.OnConnectionStateChange(func(state webrtc.PeerConnectionState) {
73-
logger.Levelf(log.Warning, "webrtc PeerConnection state changed to %v", state)
73+
logger.Levelf(log.Debug, "webrtc PeerConnection state changed to %v", state)
7474
span.AddEvent("connection state changed", trace.WithAttributes(attribute.String("state", state.String())))
7575
})
7676
return wpc, nil

wstracker.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,23 @@ func (me *websocketTrackers) Get(url string, infoHash [20]byte) (*webtorrent.Tra
5757
defer me.mu.Unlock()
5858
value, ok := me.clients[url]
5959
if !ok {
60-
dialer := &websocket.Dialer{Proxy: me.Proxy, NetDialContext: me.DialContext, HandshakeTimeout: websocket.DefaultDialer.HandshakeTimeout}
60+
dialer := &websocket.Dialer{
61+
Proxy: me.Proxy,
62+
NetDialContext: me.DialContext,
63+
HandshakeTimeout: websocket.DefaultDialer.HandshakeTimeout,
64+
}
6165
value = &refCountedWebtorrentTrackerClient{
6266
TrackerClient: webtorrent.TrackerClient{
6367
Dialer: dialer,
6468
Url: url,
6569
GetAnnounceRequest: me.GetAnnounceRequest,
6670
PeerId: me.PeerId,
6771
OnConn: me.OnConn,
68-
Logger: me.Logger.WithText(func(m log.Msg) string {
69-
return fmt.Sprintf("tracker client for %q: %v", url, m)
70-
}),
72+
Logger: me.Logger.WithText(
73+
func(m log.Msg) string {
74+
return fmt.Sprintf("tracker client for %q: %v", url, m)
75+
},
76+
),
7177
WebsocketTrackerHttpHeader: me.WebsocketTrackerHttpHeader,
7278
ICEServers: me.ICEServers,
7379
},

0 commit comments

Comments
 (0)