2
0
mirror of synced 2025-02-24 14:48:27 +00:00

573 Commits

Author SHA1 Message Date
Matt Joiner
0f495ce97d Optimize the use of worstConnSlice again 2021-11-29 10:07:48 +11:00
Matt Joiner
4f3db19ca3 Optimize Torrent.haveAnyPieces 2021-11-29 00:44:24 +11:00
Matt Joiner
97e1e2469b Announce to DHT if we want conns, not just peers 2021-11-28 22:46:45 +11:00
Matt Joiner
b196fe7765 Wanting peers is a subset of wanting conns 2021-11-28 22:40:55 +11:00
Matt Joiner
f621f0f5a8 Don't want conns for seeding unless we have a piece 2021-11-28 22:40:53 +11:00
Matt Joiner
560b463983 Comment out pending requests tests and asserts
These need to be updated. BSI for pending requests removes an enormous amount of memory use for very large torrents.
2021-11-25 22:59:20 +11:00
Matt Joiner
0f81e0011f Avoid calling net.Conn methods with the Client mutex locked
The utp firewall callback might want to use it. I can't think of a better way to determine with an incoming connection request should be blocked.
2021-11-17 14:00:50 +11:00
Matt Joiner
a90ae5aed4 Pass HTTP Proxy config into webseeding HTTP client 2021-11-12 14:16:14 +11:00
Matt Joiner
dea0e41e29 Boost webseed max requests 2021-11-12 13:51:58 +11:00
Matt Joiner
2fd928b918 Don't use non-directory webseed URLs for multi-file torrents 2021-11-12 12:37:40 +11:00
Matt Joiner
c6ee03f449 gofumpt 2021-11-08 14:47:01 +11:00
Matt Joiner
8d193edb7e Remove unused Torrent.numActivePeers 2021-11-01 11:49:36 +11:00
Matt Joiner
87a67db680 Remove unused conn piece inclinations 2021-11-01 11:49:27 +11:00
afjoseph
487352fa5b fixup! [trackerscraper] Add custom DNS lookup function 2021-11-01 11:26:58 +11:00
afjoseph
2a6152b832 [trackerscraper] Add custom DNS lookup function 2021-11-01 11:26:58 +11:00
Matt Joiner
98957b6e8e Only assert pending requests when check is enabled
Uses too much CPU for production from its current callsites.
2021-10-26 14:42:42 +11:00
Matt Joiner
37373864e4 Add more comprehensive pending requests assertions 2021-10-25 16:16:56 +11:00
Matt Joiner
d331419604 Demote Torrent.runHandshookConnLoggingErr level to debug 2021-10-21 11:40:06 +11:00
Matt Joiner
ff3c186396 Add low requests check
This is an optimization for webseeds, which have 10 synchronous request routines, and if the request count dips below 10, some sit idle. There is probably something similar to be done with PeerConns, which won't update until there are zero requests, but there there is a timer to refresh updates, and the queues are very long (typically 512-2048).
2021-10-21 10:48:43 +11:00
Matt Joiner
8eec0b665e Update webseeds for peer requesting 2021-10-21 10:28:57 +11:00
Matt Joiner
a7d3296003 Use roaring.Bitmap.IsEmpty where appropriate 2021-10-19 14:08:56 +11:00
Matt Joiner
de87fd3eb1 Avoid allocation putting undirtiedChunksIter into interface 2021-10-19 14:08:56 +11:00
Matt Joiner
529aaa9b1f Use roaring bitmap for pending pieces
Also makes a significant optimization for peerHasWantedPieces possible.
2021-10-19 14:08:56 +11:00
Matt Joiner
5e8f61abb5 Optimize request updates due to conn and reader state changes 2021-10-19 14:08:56 +11:00
Matt Joiner
7d0be0ac65 Optimize chunk calculations in request strategy 2021-10-19 14:08:56 +11:00
Matt Joiner
10b9e88356 Implement pending requests using BSI 2021-10-19 14:08:56 +11:00
Matt Joiner
9aff9f3592 Extract pendingRequests 2021-10-19 14:08:56 +11:00
Matt Joiner
2be5a95b06 Add reasons for updateRequests to be triggered 2021-10-19 14:08:56 +11:00
Matt Joiner
16c571b58b Add pprof labels for request updates and remove Client-wide requester 2021-10-19 14:08:13 +11:00
Matt Joiner
30b99e7102 Remove peer piece inclination and piece request order
These are vestigial data structures used with old request strategy implementations.
2021-10-19 14:08:13 +11:00
Matt Joiner
3ef8cfba27 Log handshook conn run errors with level warning
(cherry picked from commit 7ca7890e9f30307a1f4942e6d987791a142c3cb3)
2021-10-19 14:07:48 +11:00
Matt Joiner
6f196c8d33 Update piece priority after processing piece hash result
Seems to avoid some silly performance issues in triggering request updates due to a piece still pending while being marked.
2021-10-19 14:03:03 +11:00
Simon Kirsten
637045c19a
Add DisableInitialPieceCheck option (#677) 2021-10-11 11:33:40 +11:00
Matt Joiner
72a06d88fc Add TorrentStats.PiecesComplete
Fixes https://github.com/anacrolix/torrent/issues/352.
2021-10-07 13:50:13 +11:00
Matt Joiner
28e9064288 Fix comment that seems to mess with GoLand's package structure 2021-10-07 12:09:52 +11:00
Matt Joiner
c9c137d8f2 Add a flag for Complete 2021-10-07 12:09:20 +11:00
Matt Joiner
9720fd576d Update chansync 2021-10-07 11:45:09 +11:00
Matt Joiner
da1221dd50 Change Peer._peerPieces to use raw roaring Bitmap type
The wrapper type was from when roaring didn't support zero-alloc initialization.
2021-10-05 17:48:34 +11:00
YenForYang
86fe6cc872
Inlineable (*Torrent).BytesMissing() (#633)
Honestly a name like `BytesLeft` would have been more suitable, but it's too late for that I guess.
2021-09-27 12:43:09 +10:00
Matt Joiner
63b3d2d211 Track dirty chunks in a single bitmap on Torrent 2021-09-20 18:52:54 +10:00
Matt Joiner
510877ea43 Reduce the diff to master and add peerRequesting feature const 2021-09-20 15:09:28 +10:00
Matt Joiner
1d2d1a9cde Store peer requests in a bitmap 2021-09-19 15:16:37 +10:00
YenForYang
e80b989f8e
Clarify maximum value of "metadata_size" (#609) 2021-09-14 22:36:19 +10:00
YenForYang
a8db640c62
Drop bradfitz/iter dependency (#605)
* Drop bradfitz/iter dependency

`range iter.N` looks nice and doesn't allocate, but unfortunately using a `range` expression blocks a function from being inlined wherever it's used (for now). It's not that we need inlining in all cases, but I do think a C-style for loop looks just as nice and is probably clearer to the majority. There also aren't any clear disadvantages to changing (unless you just happen to dislike the look of C)

* Update misc_test.go

* Update rlreader_test.go

* Update torrent_test.go

* Update bench_test.go

* Update client_test.go

* Update iplist_test.go

* Update mse_test.go

* Update peerconn_test.go

* Update peerconn.go

* Update order_test.go

* Update decoder_test.go

* Update main.go

* Update bench-piece-mark-complete.go

* Update main.go

* Update torrent.go

* Update iplist_test.go

* Update main.go
2021-09-14 13:46:50 +10:00
YenForYang
5c440e8929
Simplify (*Torrent).gotMetainfo (#581) 2021-09-13 11:41:11 +10:00
Matt Joiner
0d10a1b53a Optimize Torrent.worstBadConn 2021-09-10 23:07:10 +10:00
YenForYang
62c6fbc8f8
Clarify ownership of (*Torrent).chunkPool (#583)
Basically bind the lifetime of chunkPool to the torrent by using `sync.Pool` in lieu of `*sync.Pool`. Gives the GC ever so slightly less work to do.
2021-09-09 22:27:16 +10:00
Zilog8
ccb90f1252
Improve Closing (#559)
- Prevent double-closing in cmd/torrent
- Move async closing from storage to torrents, and wait on them to finish tidying up before returning/exiting.
2021-09-05 11:33:41 +10:00
Matt Joiner
175b826e73 Rework Reader waiting 2021-09-04 23:07:32 +10:00
Matt Joiner
bf6e64a652 Fix some DeepSource lints 2021-08-30 11:48:34 +10:00