]>
Sergey Matveev's repositories - btrtrc.git/log
Matt Joiner [Mon, 18 Oct 2021 10:52:09 +0000 (21:52 +1100)]
Randomize request order
Matt Joiner [Mon, 18 Oct 2021 10:50:50 +0000 (21:50 +1100)]
Include pending cancel count in peer status
Matt Joiner [Mon, 18 Oct 2021 10:50:13 +0000 (21:50 +1100)]
Don't panic on request refresh if there are no existing requests
Matt Joiner [Mon, 18 Oct 2021 08:06:33 +0000 (19:06 +1100)]
Improvements to request refreshing
Matt Joiner [Mon, 18 Oct 2021 07:40:33 +0000 (18:40 +1100)]
Refresh requests after a second of no updates
Matt Joiner [Mon, 18 Oct 2021 05:32:32 +0000 (16:32 +1100)]
go mod tidy
Matt Joiner [Mon, 18 Oct 2021 05:32:22 +0000 (16:32 +1100)]
glr resolve anacrolix/args
Matt Joiner [Mon, 18 Oct 2021 05:31:16 +0000 (16:31 +1100)]
Use roaring.Bitmap.IsEmpty where appropriate
Matt Joiner [Thu, 14 Oct 2021 12:14:39 +0000 (23:14 +1100)]
Make useful data stat more readable
Matt Joiner [Thu, 14 Oct 2021 12:14:10 +0000 (23:14 +1100)]
Print average download rate
Matt Joiner [Wed, 13 Oct 2021 08:05:19 +0000 (19:05 +1100)]
Add expvar for successful peer wire protocol handshake peer reserved bytes
Matt Joiner [Wed, 13 Oct 2021 04:18:12 +0000 (15:18 +1100)]
Fix log message argument
Matt Joiner [Wed, 13 Oct 2021 04:17:48 +0000 (15:17 +1100)]
Avoid allocation putting undirtiedChunksIter into interface
Matt Joiner [Wed, 13 Oct 2021 04:16:53 +0000 (15:16 +1100)]
Use roaring bitmap for pending pieces
Also makes a significant optimization for peerHasWantedPieces possible.
Matt Joiner [Tue, 12 Oct 2021 23:16:56 +0000 (10:16 +1100)]
Wait for cancelled requests to be rejected per the spec
Matt Joiner [Tue, 12 Oct 2021 02:06:59 +0000 (13:06 +1100)]
Panic if pending request count goes negative in requesting
Matt Joiner [Tue, 12 Oct 2021 02:06:32 +0000 (13:06 +1100)]
Use pointer receiver for peerRequests.{Less,Len}
Matt Joiner [Tue, 12 Oct 2021 02:06:11 +0000 (13:06 +1100)]
Track requests that are preserved across chokings
Matt Joiner [Tue, 12 Oct 2021 01:31:47 +0000 (12:31 +1100)]
Simplify request ordering for reversed conditions
Matt Joiner [Tue, 12 Oct 2021 00:58:46 +0000 (11:58 +1100)]
Some fixes to pending request accounting
Matt Joiner [Mon, 11 Oct 2021 11:04:53 +0000 (22:04 +1100)]
Handle allowed fast while choked when requests already exist in the same piece
Matt Joiner [Mon, 11 Oct 2021 07:22:02 +0000 (18:22 +1100)]
Add missing request updates on cancels, rejects
Matt Joiner [Mon, 11 Oct 2021 07:21:24 +0000 (18:21 +1100)]
Don't automatically delete requests if we're choked with fast extension
Matt Joiner [Mon, 11 Oct 2021 05:21:26 +0000 (16:21 +1100)]
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.
Matt Joiner [Mon, 11 Oct 2021 04:46:40 +0000 (15:46 +1100)]
Optimize Peer.peerHasWantedPieces
Matt Joiner [Mon, 11 Oct 2021 04:45:55 +0000 (15:45 +1100)]
Optimize request updates due to conn and reader state changes
Matt Joiner [Sun, 10 Oct 2021 01:02:29 +0000 (12:02 +1100)]
Extend nominal max requests upper bound to 2048
Matt Joiner [Sun, 10 Oct 2021 00:54:19 +0000 (11:54 +1100)]
Use a flat slice for pending request counts
Under heavy load, seems to be 2-3x faster.
Matt Joiner [Sun, 10 Oct 2021 00:32:27 +0000 (11:32 +1100)]
Optimize chunk calculations in request strategy
Matt Joiner [Sun, 10 Oct 2021 00:19:40 +0000 (11:19 +1100)]
Ignore request strategy run gobs and envrcs
Matt Joiner [Sun, 10 Oct 2021 00:19:08 +0000 (11:19 +1100)]
Implement pending requests using BSI
Matt Joiner [Sat, 9 Oct 2021 08:00:58 +0000 (19:00 +1100)]
Extract pendingRequests
Matt Joiner [Fri, 8 Oct 2021 22:14:57 +0000 (09:14 +1100)]
Add reasons for updateRequests to be triggered
Matt Joiner [Fri, 8 Oct 2021 02:53:36 +0000 (13:53 +1100)]
Add pprof labels for request updates and remove Client-wide requester
Matt Joiner [Fri, 8 Oct 2021 01:41:25 +0000 (12:41 +1100)]
Remove peer piece inclination and piece request order
These are vestigial data structures used with old request strategy implementations.
Matt Joiner [Thu, 7 Oct 2021 06:31:10 +0000 (17:31 +1100)]
Change peer requesting to spread requests out evenly
Matt Joiner [Tue, 19 Oct 2021 02:37:46 +0000 (13:37 +1100)]
Log handshook conn run errors with level warning
(cherry picked from commit
7ca7890e9f30307a1f4942e6d987791a142c3cb3)
Matt Joiner [Tue, 19 Oct 2021 02:37:18 +0000 (13:37 +1100)]
Ending a conn because we don't like its ID is not an error
(cherry picked from commit
2a5ba846cef9b4e035b3b88698f3e7f7d9d79251)
Matt Joiner [Tue, 19 Oct 2021 02:13:23 +0000 (13:13 +1100)]
Fix incomplete Integer.Read
Possibly on read buffer boundaries, this would have caused errant io.ErrUnexpectedEOF.
(cherry picked from commit
22569449dad48e1c5cdeac171625585f8ca976c9)
Matt Joiner [Sun, 10 Oct 2021 00:22:29 +0000 (11:22 +1100)]
Only allow chunk size to be set for new Torrents
(cherry picked from commit
09e73e9fce139cd78da48c442e8610501b6fd26b)
Matt Joiner [Fri, 8 Oct 2021 23:26:52 +0000 (10:26 +1100)]
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.
Matt Joiner [Sat, 9 Oct 2021 03:20:54 +0000 (14:20 +1100)]
Pieces being marked should have priority none
Also reorder the checks a bit to favour the cheaper ones.
Simon Kirsten [Mon, 11 Oct 2021 00:33:40 +0000 (02:33 +0200)]
Add DisableInitialPieceCheck option (#677)
Matt Joiner [Thu, 7 Oct 2021 06:20:04 +0000 (17:20 +1100)]
Update requests on unchoke
Matt Joiner [Thu, 7 Oct 2021 06:00:39 +0000 (17:00 +1100)]
cmd/torrent: Ensure envpprof.Stop runs before exit
Matt Joiner [Thu, 7 Oct 2021 02:56:45 +0000 (13:56 +1100)]
go mod tidy
Fixes broken go doc: https://github.com/golang/go/issues/36811#issuecomment-
937401816
Matt Joiner [Thu, 7 Oct 2021 02:50:13 +0000 (13:50 +1100)]
Add TorrentStats.PiecesComplete
Fixes https://github.com/anacrolix/torrent/issues/352.
Matt Joiner [Thu, 7 Oct 2021 02:38:29 +0000 (13:38 +1100)]
Add to tests for Torrent.Complete
Matt Joiner [Thu, 7 Oct 2021 02:31:08 +0000 (13:31 +1100)]
Return errors from Client.Close
Matt Joiner [Thu, 7 Oct 2021 01:09:52 +0000 (12:09 +1100)]
Fix comment that seems to mess with GoLand's package structure
Matt Joiner [Thu, 7 Oct 2021 01:09:20 +0000 (12:09 +1100)]
Add a flag for Complete
Matt Joiner [Thu, 7 Oct 2021 00:50:30 +0000 (11:50 +1100)]
Upgrade Torrent.GotInfo
Matt Joiner [Thu, 7 Oct 2021 00:45:09 +0000 (11:45 +1100)]
Update chansync
Matt Joiner [Wed, 6 Oct 2021 07:43:15 +0000 (18:43 +1100)]
Apply some lints from GoLand
Matt Joiner [Wed, 6 Oct 2021 07:36:25 +0000 (18:36 +1100)]
Remove old-style build tags
Matt Joiner [Tue, 5 Oct 2021 09:06:23 +0000 (20:06 +1100)]
Switch Peer.PieceAllowedFast and several request strategy inputs to raw roaring.Bitmaps
This is in preparation to support encoding request strategy run inputs for benchmarking.
Matt Joiner [Tue, 5 Oct 2021 06:48:52 +0000 (17:48 +1100)]
go fmt ./...
Matt Joiner [Tue, 5 Oct 2021 06:48:34 +0000 (17:48 +1100)]
Change Peer._peerPieces to use raw roaring Bitmap type
The wrapper type was from when roaring didn't support zero-alloc initialization.
Matt Joiner [Thu, 30 Sep 2021 02:01:56 +0000 (12:01 +1000)]
Wrap error with %w in mainReadLoop
Matt Joiner [Thu, 30 Sep 2021 02:01:34 +0000 (12:01 +1000)]
Fix mainReadLoop benchmark
Matt Joiner [Thu, 30 Sep 2021 01:52:50 +0000 (11:52 +1000)]
Fix scheduling overhead in decoding benchmark
Matt Joiner [Thu, 30 Sep 2021 01:19:50 +0000 (11:19 +1000)]
Combine peer protocol fuzz targets into one file
Matt Joiner [Thu, 30 Sep 2021 01:05:01 +0000 (11:05 +1000)]
More optimizations in peer protocol message decoding
Matt Joiner [Thu, 30 Sep 2021 00:24:03 +0000 (10:24 +1000)]
peer_protocol: Use faster form for Integer.{UnmarshalBinary,Read}
Matt Joiner [Wed, 29 Sep 2021 23:59:18 +0000 (09:59 +1000)]
Remove an allocation reading message length
Matt Joiner [Wed, 29 Sep 2021 23:45:50 +0000 (09:45 +1000)]
Try to avoid allocating buffer
Matt Joiner [Wed, 29 Sep 2021 23:42:54 +0000 (09:42 +1000)]
Improvements to decoder fuzzing
Matt Joiner [Wed, 29 Sep 2021 23:01:10 +0000 (09:01 +1000)]
Add some fuzzing in peer_protocol
Matt Joiner [Wed, 29 Sep 2021 06:56:01 +0000 (16:56 +1000)]
Limit decoded bencode string lengths to 32 bits
Found in fuzzing
Matt Joiner [Wed, 29 Sep 2021 02:12:16 +0000 (12:12 +1000)]
Add some fuzzing seeds
Matt Joiner [Wed, 29 Sep 2021 02:11:58 +0000 (12:11 +1000)]
Fix parsing of strings that don't fit in memory
Matt Joiner [Wed, 29 Sep 2021 02:11:17 +0000 (12:11 +1000)]
Fix fuzz comparison of big.Int
Matt Joiner [Wed, 29 Sep 2021 00:13:32 +0000 (10:13 +1000)]
Update fuzz to use new standard library support
Matt Joiner [Tue, 28 Sep 2021 23:50:01 +0000 (09:50 +1000)]
Simplify bencode.Decoder.parseStringInterface
YenForYang [Tue, 28 Sep 2021 23:30:35 +0000 (18:30 -0500)]
bencode: optimize `(*Decoder).parseStringInterface()` (#659)
YenForYang [Mon, 27 Sep 2021 02:43:09 +0000 (21:43 -0500)]
Inlineable `(*Torrent).BytesMissing()` (#633)
Honestly a name like `BytesLeft` would have been more suitable, but it's too late for that I guess.
YenForYang [Mon, 27 Sep 2021 02:41:20 +0000 (21:41 -0500)]
Inlineable `addrIndex` (#673)
YenForYang [Thu, 23 Sep 2021 14:10:30 +0000 (09:10 -0500)]
Eliminate `expect` dependency (#667)
Matt Joiner [Tue, 21 Sep 2021 06:07:08 +0000 (16:07 +1000)]
Default to peer requesting disabled
There are some flaws that need to be fixed up before it might be considered the default.
Matt Joiner [Tue, 21 Sep 2021 03:06:06 +0000 (13:06 +1000)]
cmd/torrent: Don't make --stats default to --debug's value
Matt Joiner [Tue, 21 Sep 2021 03:05:16 +0000 (13:05 +1000)]
Remove unused function
Matt Joiner [Tue, 21 Sep 2021 03:04:51 +0000 (13:04 +1000)]
Add ClientConfig.AlwaysWantConns
Matt Joiner [Mon, 20 Sep 2021 12:01:18 +0000 (22:01 +1000)]
cmd/torrent: Refactor and set progress interval to 3s
Matt Joiner [Tue, 21 Sep 2021 00:48:15 +0000 (10:48 +1000)]
Use an iterator to skip through dirty chunks
Matt Joiner [Mon, 20 Sep 2021 11:33:46 +0000 (21:33 +1000)]
cmd/torrent: Include download stats on interrupt
Matt Joiner [Mon, 20 Sep 2021 08:52:54 +0000 (18:52 +1000)]
Track dirty chunks in a single bitmap on Torrent
Matt Joiner [Mon, 20 Sep 2021 05:24:24 +0000 (15:24 +1000)]
Fix cancellation for global requesting
Matt Joiner [Mon, 20 Sep 2021 05:10:19 +0000 (15:10 +1000)]
Merge branch 'master' into peer-requesting
Matt Joiner [Mon, 20 Sep 2021 05:09:28 +0000 (15:09 +1000)]
Reduce the diff to master and add peerRequesting feature const
Matt Joiner [Mon, 20 Sep 2021 04:17:58 +0000 (14:17 +1000)]
cmd/torrent: Dump download statistics
Matt Joiner [Mon, 20 Sep 2021 04:16:55 +0000 (14:16 +1000)]
Filter next requests application for peer state changes
Matt Joiner [Mon, 20 Sep 2021 02:31:44 +0000 (12:31 +1000)]
Add NOTES
Matt Joiner [Sun, 19 Sep 2021 05:16:37 +0000 (15:16 +1000)]
Store peer requests in a bitmap
Matt Joiner [Sat, 18 Sep 2021 11:01:06 +0000 (21:01 +1000)]
When updating requests, only tickle writer if there are no requests pending
Just a quick attempt to reduce load for now. There'll be a much better way to do this.
Matt Joiner [Sat, 18 Sep 2021 10:34:14 +0000 (20:34 +1000)]
Do peer requests separately for each peer
Matt Joiner [Sat, 18 Sep 2021 09:00:21 +0000 (19:00 +1000)]
Add choking/allowed fast checks to Peer.shouldRequest
Matt Joiner [Sat, 18 Sep 2021 08:57:50 +0000 (18:57 +1000)]
Export request_strategy.GetRequestablePieces
Matt Joiner [Sat, 18 Sep 2021 08:54:54 +0000 (18:54 +1000)]
goimports doing its thing
Matt Joiner [Sat, 18 Sep 2021 03:50:55 +0000 (13:50 +1000)]
Add some tests verifying request map ordering
Matt Joiner [Sat, 18 Sep 2021 03:23:36 +0000 (13:23 +1000)]
Update anacrolix/args for bool Flag fix