Matt Joiner
87dfef7778
Don't wait for DHT pings
...
Fixes a growing backlog of pings if DHT servers are rate-limited in their queries.
2021-12-23 14:00:00 +11:00
Matt Joiner
80aec73cb5
Make Torrent.cancelRequestsForPiece more efficient
2021-12-23 14:00:00 +11:00
Matt Joiner
506ff8d037
Use relative availabilities to determine piece request order
...
Most overhead comes from peers that connect that have everything, and we just increment every single piece's availability. There may be some unresolved determinism with torrents that share the same ordering.
2021-12-23 14:00:00 +11:00
Matt Joiner
bdb33ef9f7
gofumpt -extra
2021-12-23 14:00:00 +11:00
Matt Joiner
74c70d852a
Add TestHaveAllThenBitfield
...
The result of a misguided attempt to reduce piece peer availability increment and decrement overhead for have all/full-bitfield and conn closes.
2021-12-23 14:00:00 +11:00
Preston
b831060d6e
fix http tracker arg position ( #700 )
...
Co-authored-by: Bot Git <bot@example.com>
2021-12-23 12:34:16 +11:00
martin
b6cc93c0be
* set proxy of websocket tracker to the proxy used by client config
2021-12-16 16:04:59 +11:00
Matt Joiner
73bdd5a7a4
Fix leaked mmap storage in test
2021-12-16 14:19:21 +11:00
Matt Joiner
12c77bc410
Fix race in TextPexConnState
2021-12-16 14:19:21 +11:00
Matt Joiner
48fa9b59fd
Fix go-libutp import when CGO is disabled
2021-12-16 14:19:21 +11:00
Matt Joiner
2b0ec5d762
Test benchmarks in a separate step and limit executions
2021-12-16 14:19:19 +11:00
Matt Joiner
ffb98097fa
Fix BenchmarkUpdatePiecePriorities
2021-12-16 14:00:19 +11:00
Matt Joiner
e7ee568c52
Fix BenchmarkConnectionMainReadLoop
...
Broken by piece request order changes.
2021-12-16 14:00:19 +11:00
Matt Joiner
1668a18859
Some optimizations in PieceRequestOrder.Update and item comparisons
2021-12-15 19:18:16 +11:00
Matt Joiner
8c129d6bfc
Retract v1.39.0
2021-12-13 12:16:43 +11:00
Matt Joiner
c0a888ee17
Tidy up request heaping comments
2021-12-13 12:12:30 +11:00
Matt Joiner
9d9556c97f
Add Peer.cancelAllRequests for webseedPeer
2021-12-13 12:11:38 +11:00
Matt Joiner
98f188dcbe
Update requests after deleting all in some corner cases
...
Choked by non-fast PeerConn, deleted PeerConn. They're not exactly guarded as strictly as they could be, so there's plenty of room for performance improvements here.
2021-12-13 12:09:12 +11:00
Matt Joiner
47ef8d9c2d
Assert that a request isn't cancelled before requesting it again
2021-12-13 11:56:57 +11:00
Matt Joiner
a671c06b94
Update peer requests if not interested when piece priorities change
...
This should fix a starvation issue where we don't signal interest to a peer that has us choked.
2021-12-13 11:55:47 +11:00
Matt Joiner
26b521b41c
Explicitly use go-libutp synchronous firewall callback
2021-12-12 21:32:29 +11:00
Matt Joiner
3d3052b8bd
Merge branch 'request-strategy-experiments'
...
This should bring in significant performance improvements that fix issues with the peer-requesting that existed from v1.34.0.
2021-12-12 18:38:33 +11:00
Matt Joiner
04beb8937f
More consistent cancellation management
2021-12-12 18:35:02 +11:00
Matt Joiner
30375615b3
Remove unused request strategy code
2021-12-12 18:35:02 +11:00
Matt Joiner
1bc84e316f
Don't group Torrent piece request orders without a storage capacity together
2021-12-12 18:35:02 +11:00
Matt Joiner
8c5df03e14
Minimize allocations due to heap escapes
2021-12-12 18:35:01 +11:00
Matt Joiner
8c9a308c9a
Only steal an odd request if the stealer more recently received a chunk
...
This helps break the stealing cycle during endgame, and lets us trickle the request to the peer conn with the best record. It might not be sufficient but works nice in testing so far.
2021-12-12 18:35:01 +11:00
Matt Joiner
7de7b986c9
Only use last requested when both requests are already pending
2021-12-12 18:35:01 +11:00
Matt Joiner
ddf41fc2f1
Add Torrent-level request cancel for consistency
2021-12-12 18:35:01 +11:00
Matt Joiner
aca22a0896
Update peer cancel assumptions and return
2021-12-12 18:35:01 +11:00
Matt Joiner
1b92249f2a
Improve panic message
2021-12-12 18:35:01 +11:00
Matt Joiner
117ae28b38
Try request stealing
2021-12-12 18:35:01 +11:00
Matt Joiner
73be571f50
Don't try to request anything without the torrent info
2021-12-12 18:35:01 +11:00
Matt Joiner
99a64bcf63
Wait between duplicate requests
2021-12-12 18:35:01 +11:00
Matt Joiner
8025d15155
Stop iterating pieces when storage is exhausted
2021-12-12 18:35:01 +11:00
Matt Joiner
135f21fb64
Use interfaces to lazily expose the bare minimum inputs to GetRequestablePieces
2021-12-12 18:35:01 +11:00
Matt Joiner
4088e847f3
Provide mapping from infohash to Torrent in Input
2021-12-12 18:35:01 +11:00
Matt Joiner
94bb5d40ba
Implement piece request ordering with retained state
2021-12-12 18:35:01 +11:00
Matt Joiner
b99dd505b5
Avoid reflection sorting request pieces
2021-12-12 18:35:01 +11:00
Matt Joiner
de2bea502c
Use indices to lookup pieces for comparison
2021-12-12 18:35:01 +11:00
Matt Joiner
231301f5d7
Cache piece request orderings
2021-12-12 18:35:01 +11:00
Matt Joiner
8e99558e11
Retract last few minor versions with peer-requesting issues
...
(cherry picked from commit 85a436a5ca75a47a52dcab9648d85f3c3fb53e35)
2021-12-12 18:34:31 +11:00
Matt Joiner
cd9a3a14ad
Revert "Link to godocs.io for documentation"
...
This reverts commit c2ed60f9f2
.
2021-12-12 17:20:02 +11:00
Matt Joiner
67ed5d0032
Partition piece request strategy by storage capacity key
2021-12-12 16:56:01 +11:00
Matt Joiner
ad082bc644
Do webseed request updates asynchronously
...
Fixes a bug where received chunks are immediately requested while still being processed.
2021-12-12 16:56:01 +11:00
Matt Joiner
6625b05da4
Add more identifying information to PeerConn.String
...
Some logs for unexpected protocol violations could be helped by them.
2021-12-12 16:56:01 +11:00
Matt Joiner
1d787c3923
Add generalized decodeJsonByteString and a fuzz target for it
2021-12-12 16:56:01 +11:00
Matt Joiner
14ee69aaeb
Add failing bencode fuzz input
2021-12-12 16:56:01 +11:00
Matt Joiner
96ef73aeb6
Transmission does not reject cancelled requests
2021-12-12 16:56:01 +11:00
Matt Joiner
388bfafa01
Don't log webseed request context cancellation results
2021-12-12 16:56:01 +11:00