Commit Graph

3053 Commits

Author SHA1 Message Date
Matt Joiner 8b368b3832 Run all tests and benchmarks twice
This helps detect bad cleanup in tests, which is very common.
2021-10-27 15:15:27 +11:00
Matt Joiner d1e2d7ff92 Remove unnecessary intermediate steps in Go workflow 2021-10-27 15:14:48 +11:00
Matt Joiner f2e9eeba3b Check if torrent is closed before handling peer request data read failures
Should fix panics using storage after its been closed, like in https://github.com/anacrolix/torrent/runs/4017475163.
2021-10-27 15:14:11 +11:00
Matt Joiner eb2fc6dbef Fix panic in benchmark 2021-10-27 13:57:19 +11:00
Matt Joiner ae28d0e0e4 Merge branch 'peer-requesting' 2021-10-27 12:42:26 +11:00
Matt Joiner a7e7cbcb04 Retain the desired request ordering
This means we don't have to randomize the request order when we finally apply it to avoid favouring lower indices. The difference is very subtle but should be impactful with smaller connection counts and rarer torrents.
2021-10-27 10:13:39 +11:00
Matt Joiner 31985f1ea0 Add Peer.mustRequest 2021-10-26 15:03:04 +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 344ada8b7c Add disabled code for limiting wasted chunks 2021-10-25 21:37:25 +11:00
Matt Joiner e7426133e2 Quote webrtc offer ID as ASCII-only 2021-10-25 21:03:51 +11:00
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