Matt Joiner
ccf57798a2
Fix iter pending chunk request offsets
2021-10-25 20:53:39 +11:00
Matt Joiner
3d49a29288
Support minimum peer extensions
2021-10-25 20:52:44 +11:00
Matt Joiner
e8067f741f
Always count unhandled requests as pending
...
Fixes https://github.com/anacrolix/torrent/issues/679 .
2021-10-25 16:36:58 +11:00
Matt Joiner
28726f737c
Record webseed request result bytes against client stats
...
Should fix the issue where webseeds cause >100% useful data readings.
2021-10-25 16:17:55 +11:00
Matt Joiner
37373864e4
Add more comprehensive pending requests assertions
2021-10-25 16:16:56 +11:00
Matt Joiner
506996d038
Fix panic in update requests timer func on closed conn
2021-10-25 16:16:06 +11:00
Matt Joiner
e178f99f35
Fix race running and closing webtorrent tracker clients
2021-10-25 16:15:42 +11:00
Matt Joiner
e884b8079b
Fix panic when sustaining unrejected requests after being choked
...
Fixes https://github.com/anacrolix/torrent/issues/680 .
2021-10-25 13:00: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
faf385c163
cmd/torrent: Use updated args module
2021-10-20 16:41:33 +11:00
Matt Joiner
92d3e1ed6d
Remove unused peerImpl methods
2021-10-20 16:35:45 +11:00
Matt Joiner
200f5e5140
go mod tidy
2021-10-20 11:36:48 +11:00
Matt Joiner
9625553fd2
Demote some recent logs to debug
2021-10-20 11:22:35 +11:00
Matt Joiner
e31e191c8d
Improve protocol behaviour logging
2021-10-20 11:22:20 +11:00
Matt Joiner
11e1080b40
go fmt
2021-10-19 14:08:56 +11:00
Matt Joiner
e51accb3e2
Don't error receiving unchoke while already unchoked
2021-10-19 14:08:56 +11:00
Matt Joiner
b50e941d1d
Refresh updates after 3s instead of 1s
2021-10-19 14:08:56 +11:00
Matt Joiner
4ce06bef00
Randomize request order
2021-10-19 14:08:56 +11:00
Matt Joiner
2f01dbab80
Include pending cancel count in peer status
2021-10-19 14:08:56 +11:00
Matt Joiner
aca3924c5e
Don't panic on request refresh if there are no existing requests
2021-10-19 14:08:56 +11:00
Matt Joiner
ccce2dba13
Improvements to request refreshing
2021-10-19 14:08:56 +11:00
Matt Joiner
1201ccc53b
Refresh requests after a second of no updates
2021-10-19 14:08:56 +11:00
Matt Joiner
700542de89
go mod tidy
2021-10-19 14:08:56 +11:00
Matt Joiner
98012dddb7
glr resolve anacrolix/args
2021-10-19 14:08:56 +11:00
Matt Joiner
a7d3296003
Use roaring.Bitmap.IsEmpty where appropriate
2021-10-19 14:08:56 +11:00
Matt Joiner
7c349d31e2
Make useful data stat more readable
2021-10-19 14:08:56 +11:00
Matt Joiner
89e7e00c31
Print average download rate
2021-10-19 14:08:56 +11:00
Matt Joiner
181cbd3e52
Add expvar for successful peer wire protocol handshake peer reserved bytes
2021-10-19 14:08:56 +11:00
Matt Joiner
e8e7ef989b
Fix log message argument
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
23b4e2dc9c
Wait for cancelled requests to be rejected per the spec
2021-10-19 14:08:56 +11:00
Matt Joiner
8b90e737c8
Panic if pending request count goes negative in requesting
2021-10-19 14:08:56 +11:00
Matt Joiner
464e1297b0
Use pointer receiver for peerRequests.{Less,Len}
2021-10-19 14:08:56 +11:00
Matt Joiner
3f3bcab0d8
Track requests that are preserved across chokings
2021-10-19 14:08:56 +11:00
Matt Joiner
0a8e66c7fc
Simplify request ordering for reversed conditions
2021-10-19 14:08:56 +11:00
Matt Joiner
5f31bd83b3
Some fixes to pending request accounting
2021-10-19 14:08:56 +11:00
Matt Joiner
b2cabe7dbf
Handle allowed fast while choked when requests already exist in the same piece
2021-10-19 14:08:56 +11:00
Matt Joiner
4258ff7c60
Add missing request updates on cancels, rejects
2021-10-19 14:08:56 +11:00
Matt Joiner
7f236506cb
Don't automatically delete requests if we're choked with fast extension
2021-10-19 14:08:56 +11:00
Matt Joiner
610f8e0185
Don't put requests we can't make into the request heap
...
In particular this should save a lot of overhead if we're choked.
2021-10-19 14:08:56 +11:00
Matt Joiner
198a938700
Optimize Peer.peerHasWantedPieces
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
4f87eed81a
Extend nominal max requests upper bound to 2048
2021-10-19 14:08:56 +11:00
Matt Joiner
dfc421824c
Use a flat slice for pending request counts
...
Under heavy load, seems to be 2-3x faster.
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
ced0f543d6
Ignore request strategy run gobs and envrcs
2021-10-19 14:08:56 +11:00
Matt Joiner
10b9e88356
Implement pending requests using BSI
2021-10-19 14:08:56 +11:00