]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
2 years agoMerge branch 'peer-requesting' v1.34.0
Matt Joiner [Wed, 27 Oct 2021 01:42:26 +0000 (12:42 +1100)]
Merge branch 'peer-requesting'

2 years agoRetain the desired request ordering
Matt Joiner [Tue, 26 Oct 2021 23:13:39 +0000 (10:13 +1100)]
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.

2 years agoAdd Peer.mustRequest
Matt Joiner [Tue, 26 Oct 2021 04:03:04 +0000 (15:03 +1100)]
Add Peer.mustRequest

2 years agoOnly assert pending requests when check is enabled
Matt Joiner [Tue, 26 Oct 2021 03:42:42 +0000 (14:42 +1100)]
Only assert pending requests when check is enabled

Uses too much CPU for production from its current callsites.

2 years agoAdd disabled code for limiting wasted chunks
Matt Joiner [Mon, 25 Oct 2021 10:37:25 +0000 (21:37 +1100)]
Add disabled code for limiting wasted chunks

2 years agoQuote webrtc offer ID as ASCII-only
Matt Joiner [Mon, 25 Oct 2021 10:03:51 +0000 (21:03 +1100)]
Quote webrtc offer ID as ASCII-only

2 years agoFix iter pending chunk request offsets
Matt Joiner [Mon, 25 Oct 2021 09:53:39 +0000 (20:53 +1100)]
Fix iter pending chunk request offsets

2 years agoSupport minimum peer extensions
Matt Joiner [Mon, 25 Oct 2021 09:52:44 +0000 (20:52 +1100)]
Support minimum peer extensions

2 years agoAlways count unhandled requests as pending
Matt Joiner [Mon, 25 Oct 2021 05:36:58 +0000 (16:36 +1100)]
Always count unhandled requests as pending

Fixes https://github.com/anacrolix/torrent/issues/679.

2 years agoRecord webseed request result bytes against client stats
Matt Joiner [Mon, 25 Oct 2021 05:17:55 +0000 (16:17 +1100)]
Record webseed request result bytes against client stats

Should fix the issue where webseeds cause >100% useful data readings.

2 years agoAdd more comprehensive pending requests assertions
Matt Joiner [Mon, 25 Oct 2021 05:16:56 +0000 (16:16 +1100)]
Add more comprehensive pending requests assertions

2 years agoFix panic in update requests timer func on closed conn
Matt Joiner [Mon, 25 Oct 2021 05:16:06 +0000 (16:16 +1100)]
Fix panic in update requests timer func on closed conn

2 years agoFix race running and closing webtorrent tracker clients
Matt Joiner [Mon, 25 Oct 2021 05:15:42 +0000 (16:15 +1100)]
Fix race running and closing webtorrent tracker clients

2 years agoFix panic when sustaining unrejected requests after being choked
Matt Joiner [Mon, 25 Oct 2021 02:00:56 +0000 (13:00 +1100)]
Fix panic when sustaining unrejected requests after being choked

Fixes https://github.com/anacrolix/torrent/issues/680.

2 years agoDemote Torrent.runHandshookConnLoggingErr level to debug
Matt Joiner [Thu, 21 Oct 2021 00:40:06 +0000 (11:40 +1100)]
Demote Torrent.runHandshookConnLoggingErr level to debug

2 years agoAdd low requests check
Matt Joiner [Wed, 20 Oct 2021 23:48:43 +0000 (10:48 +1100)]
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).

2 years agoUpdate webseeds for peer requesting
Matt Joiner [Wed, 20 Oct 2021 23:28:57 +0000 (10:28 +1100)]
Update webseeds for peer requesting

2 years agocmd/torrent: Use updated args module
Matt Joiner [Wed, 20 Oct 2021 05:41:33 +0000 (16:41 +1100)]
cmd/torrent: Use updated args module

2 years agoRemove unused peerImpl methods
Matt Joiner [Wed, 20 Oct 2021 05:35:45 +0000 (16:35 +1100)]
Remove unused peerImpl methods

2 years agogo mod tidy
Matt Joiner [Wed, 20 Oct 2021 00:36:48 +0000 (11:36 +1100)]
go mod tidy

2 years agoDemote some recent logs to debug
Matt Joiner [Wed, 20 Oct 2021 00:22:35 +0000 (11:22 +1100)]
Demote some recent logs to debug

2 years agoImprove protocol behaviour logging
Matt Joiner [Wed, 20 Oct 2021 00:22:20 +0000 (11:22 +1100)]
Improve protocol behaviour logging

2 years agogo fmt
Matt Joiner [Tue, 19 Oct 2021 02:39:31 +0000 (13:39 +1100)]
go fmt

2 years agoDon't error receiving unchoke while already unchoked
Matt Joiner [Tue, 19 Oct 2021 02:36:37 +0000 (13:36 +1100)]
Don't error receiving unchoke while already unchoked

2 years agoRefresh updates after 3s instead of 1s
Matt Joiner [Mon, 18 Oct 2021 10:52:31 +0000 (21:52 +1100)]
Refresh updates after 3s instead of 1s

2 years agoRandomize request order
Matt Joiner [Mon, 18 Oct 2021 10:52:09 +0000 (21:52 +1100)]
Randomize request order

2 years agoInclude pending cancel count in peer status
Matt Joiner [Mon, 18 Oct 2021 10:50:50 +0000 (21:50 +1100)]
Include pending cancel count in peer status

2 years agoDon't panic on request refresh if there are no existing requests
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

2 years agoImprovements to request refreshing
Matt Joiner [Mon, 18 Oct 2021 08:06:33 +0000 (19:06 +1100)]
Improvements to request refreshing

2 years agoRefresh requests after a second of no updates
Matt Joiner [Mon, 18 Oct 2021 07:40:33 +0000 (18:40 +1100)]
Refresh requests after a second of no updates

2 years agogo mod tidy
Matt Joiner [Mon, 18 Oct 2021 05:32:32 +0000 (16:32 +1100)]
go mod tidy

2 years agoglr resolve anacrolix/args
Matt Joiner [Mon, 18 Oct 2021 05:32:22 +0000 (16:32 +1100)]
glr resolve anacrolix/args

2 years agoUse roaring.Bitmap.IsEmpty where appropriate
Matt Joiner [Mon, 18 Oct 2021 05:31:16 +0000 (16:31 +1100)]
Use roaring.Bitmap.IsEmpty where appropriate

2 years agoMake useful data stat more readable
Matt Joiner [Thu, 14 Oct 2021 12:14:39 +0000 (23:14 +1100)]
Make useful data stat more readable

2 years agoPrint average download rate
Matt Joiner [Thu, 14 Oct 2021 12:14:10 +0000 (23:14 +1100)]
Print average download rate

2 years agoAdd expvar for successful peer wire protocol handshake peer reserved bytes
Matt Joiner [Wed, 13 Oct 2021 08:05:19 +0000 (19:05 +1100)]
Add expvar for successful peer wire protocol handshake peer reserved bytes

2 years agoFix log message argument
Matt Joiner [Wed, 13 Oct 2021 04:18:12 +0000 (15:18 +1100)]
Fix log message argument

2 years agoAvoid allocation putting undirtiedChunksIter into interface
Matt Joiner [Wed, 13 Oct 2021 04:17:48 +0000 (15:17 +1100)]
Avoid allocation putting undirtiedChunksIter into interface

2 years agoUse roaring bitmap for pending pieces
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.

2 years agoWait for cancelled requests to be rejected per the spec
Matt Joiner [Tue, 12 Oct 2021 23:16:56 +0000 (10:16 +1100)]
Wait for cancelled requests to be rejected per the spec

2 years agoPanic if pending request count goes negative in requesting
Matt Joiner [Tue, 12 Oct 2021 02:06:59 +0000 (13:06 +1100)]
Panic if pending request count goes negative in requesting

2 years agoUse pointer receiver for peerRequests.{Less,Len}
Matt Joiner [Tue, 12 Oct 2021 02:06:32 +0000 (13:06 +1100)]
Use pointer receiver for peerRequests.{Less,Len}

2 years agoTrack requests that are preserved across chokings
Matt Joiner [Tue, 12 Oct 2021 02:06:11 +0000 (13:06 +1100)]
Track requests that are preserved across chokings

2 years agoSimplify request ordering for reversed conditions
Matt Joiner [Tue, 12 Oct 2021 01:31:47 +0000 (12:31 +1100)]
Simplify request ordering for reversed conditions

2 years agoSome fixes to pending request accounting
Matt Joiner [Tue, 12 Oct 2021 00:58:46 +0000 (11:58 +1100)]
Some fixes to pending request accounting

2 years agoHandle allowed fast while choked when requests already exist in the same piece
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

2 years agoAdd missing request updates on cancels, rejects
Matt Joiner [Mon, 11 Oct 2021 07:22:02 +0000 (18:22 +1100)]
Add missing request updates on cancels, rejects

2 years agoDon't automatically delete requests if we're choked with fast extension
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

2 years agoDon't put requests we can't make into the request heap
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.

2 years agoOptimize Peer.peerHasWantedPieces
Matt Joiner [Mon, 11 Oct 2021 04:46:40 +0000 (15:46 +1100)]
Optimize Peer.peerHasWantedPieces

2 years agoOptimize request updates due to conn and reader state changes
Matt Joiner [Mon, 11 Oct 2021 04:45:55 +0000 (15:45 +1100)]
Optimize request updates due to conn and reader state changes

2 years agoExtend nominal max requests upper bound to 2048
Matt Joiner [Sun, 10 Oct 2021 01:02:29 +0000 (12:02 +1100)]
Extend nominal max requests upper bound to 2048

2 years agoUse a flat slice for pending request counts
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.

2 years agoOptimize chunk calculations in request strategy
Matt Joiner [Sun, 10 Oct 2021 00:32:27 +0000 (11:32 +1100)]
Optimize chunk calculations in request strategy

2 years agoIgnore request strategy run gobs and envrcs
Matt Joiner [Sun, 10 Oct 2021 00:19:40 +0000 (11:19 +1100)]
Ignore request strategy run gobs and envrcs

2 years agoImplement pending requests using BSI
Matt Joiner [Sun, 10 Oct 2021 00:19:08 +0000 (11:19 +1100)]
Implement pending requests using BSI

2 years agoExtract pendingRequests
Matt Joiner [Sat, 9 Oct 2021 08:00:58 +0000 (19:00 +1100)]
Extract pendingRequests

2 years agoAdd reasons for updateRequests to be triggered
Matt Joiner [Fri, 8 Oct 2021 22:14:57 +0000 (09:14 +1100)]
Add reasons for updateRequests to be triggered

2 years agoAdd pprof labels for request updates and remove Client-wide requester
Matt Joiner [Fri, 8 Oct 2021 02:53:36 +0000 (13:53 +1100)]
Add pprof labels for request updates and remove Client-wide requester

2 years agoRemove peer piece inclination and piece request order
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.

2 years agoChange peer requesting to spread requests out evenly
Matt Joiner [Thu, 7 Oct 2021 06:31:10 +0000 (17:31 +1100)]
Change peer requesting to spread requests out evenly

2 years agoLog handshook conn run errors with level warning
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)

2 years agoEnding a conn because we don't like its ID is not an error
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)

2 years agoFix incomplete Integer.Read
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)

2 years agoOnly allow chunk size to be set for new Torrents
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)

2 years agoUpdate piece priority after processing piece hash result
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.

2 years agoPieces being marked should have priority none
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.

2 years agoAdd DisableInitialPieceCheck option (#677)
Simon Kirsten [Mon, 11 Oct 2021 00:33:40 +0000 (02:33 +0200)]
Add DisableInitialPieceCheck option (#677)

2 years agoUpdate requests on unchoke
Matt Joiner [Thu, 7 Oct 2021 06:20:04 +0000 (17:20 +1100)]
Update requests on unchoke

2 years agocmd/torrent: Ensure envpprof.Stop runs before exit
Matt Joiner [Thu, 7 Oct 2021 06:00:39 +0000 (17:00 +1100)]
cmd/torrent: Ensure envpprof.Stop runs before exit

2 years agogo mod tidy
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

2 years agoAdd TorrentStats.PiecesComplete
Matt Joiner [Thu, 7 Oct 2021 02:50:13 +0000 (13:50 +1100)]
Add TorrentStats.PiecesComplete

Fixes https://github.com/anacrolix/torrent/issues/352.

2 years agoAdd to tests for Torrent.Complete v1.33.0
Matt Joiner [Thu, 7 Oct 2021 02:38:29 +0000 (13:38 +1100)]
Add to tests for Torrent.Complete

2 years agoReturn errors from Client.Close
Matt Joiner [Thu, 7 Oct 2021 02:31:08 +0000 (13:31 +1100)]
Return errors from Client.Close

2 years agoFix comment that seems to mess with GoLand's package structure
Matt Joiner [Thu, 7 Oct 2021 01:09:52 +0000 (12:09 +1100)]
Fix comment that seems to mess with GoLand's package structure

2 years agoAdd a flag for Complete
Matt Joiner [Thu, 7 Oct 2021 01:09:20 +0000 (12:09 +1100)]
Add a flag for Complete

2 years agoUpgrade Torrent.GotInfo
Matt Joiner [Thu, 7 Oct 2021 00:50:30 +0000 (11:50 +1100)]
Upgrade Torrent.GotInfo

2 years agoUpdate chansync
Matt Joiner [Thu, 7 Oct 2021 00:45:09 +0000 (11:45 +1100)]
Update chansync

2 years agoApply some lints from GoLand
Matt Joiner [Wed, 6 Oct 2021 07:43:15 +0000 (18:43 +1100)]
Apply some lints from GoLand

2 years agoRemove old-style build tags
Matt Joiner [Wed, 6 Oct 2021 07:36:25 +0000 (18:36 +1100)]
Remove old-style build tags

2 years agoSwitch Peer.PieceAllowedFast and several request strategy inputs to raw roaring.Bitmaps
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.

2 years agogo fmt ./...
Matt Joiner [Tue, 5 Oct 2021 06:48:52 +0000 (17:48 +1100)]
go fmt ./...

2 years agoChange Peer._peerPieces to use raw roaring Bitmap type
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.

2 years agoWrap error with %w in mainReadLoop v1.32.0
Matt Joiner [Thu, 30 Sep 2021 02:01:56 +0000 (12:01 +1000)]
Wrap error with %w in mainReadLoop

2 years agoFix mainReadLoop benchmark
Matt Joiner [Thu, 30 Sep 2021 02:01:34 +0000 (12:01 +1000)]
Fix mainReadLoop benchmark

2 years agoFix scheduling overhead in decoding benchmark
Matt Joiner [Thu, 30 Sep 2021 01:52:50 +0000 (11:52 +1000)]
Fix scheduling overhead in decoding benchmark

2 years agoCombine peer protocol fuzz targets into one file
Matt Joiner [Thu, 30 Sep 2021 01:19:50 +0000 (11:19 +1000)]
Combine peer protocol fuzz targets into one file

2 years agoMore optimizations in peer protocol message decoding
Matt Joiner [Thu, 30 Sep 2021 01:05:01 +0000 (11:05 +1000)]
More optimizations in peer protocol message decoding

2 years agopeer_protocol: Use faster form for Integer.{UnmarshalBinary,Read}
Matt Joiner [Thu, 30 Sep 2021 00:24:03 +0000 (10:24 +1000)]
peer_protocol: Use faster form for Integer.{UnmarshalBinary,Read}

2 years agoRemove an allocation reading message length
Matt Joiner [Wed, 29 Sep 2021 23:59:18 +0000 (09:59 +1000)]
Remove an allocation reading message length

2 years agoTry to avoid allocating buffer
Matt Joiner [Wed, 29 Sep 2021 23:45:50 +0000 (09:45 +1000)]
Try to avoid allocating buffer

2 years agoImprovements to decoder fuzzing
Matt Joiner [Wed, 29 Sep 2021 23:42:54 +0000 (09:42 +1000)]
Improvements to decoder fuzzing

2 years agoAdd some fuzzing in peer_protocol
Matt Joiner [Wed, 29 Sep 2021 23:01:10 +0000 (09:01 +1000)]
Add some fuzzing in peer_protocol

2 years agoLimit decoded bencode string lengths to 32 bits
Matt Joiner [Wed, 29 Sep 2021 06:56:01 +0000 (16:56 +1000)]
Limit decoded bencode string lengths to 32 bits

Found in fuzzing

2 years agoAdd some fuzzing seeds
Matt Joiner [Wed, 29 Sep 2021 02:12:16 +0000 (12:12 +1000)]
Add some fuzzing seeds

2 years agoFix parsing of strings that don't fit in memory
Matt Joiner [Wed, 29 Sep 2021 02:11:58 +0000 (12:11 +1000)]
Fix parsing of strings that don't fit in memory

2 years agoFix fuzz comparison of big.Int
Matt Joiner [Wed, 29 Sep 2021 02:11:17 +0000 (12:11 +1000)]
Fix fuzz comparison of big.Int

2 years agoUpdate fuzz to use new standard library support
Matt Joiner [Wed, 29 Sep 2021 00:13:32 +0000 (10:13 +1000)]
Update fuzz to use new standard library support

2 years agoSimplify bencode.Decoder.parseStringInterface
Matt Joiner [Tue, 28 Sep 2021 23:50:01 +0000 (09:50 +1000)]
Simplify bencode.Decoder.parseStringInterface

2 years agobencode: optimize `(*Decoder).parseStringInterface()` (#659)
YenForYang [Tue, 28 Sep 2021 23:30:35 +0000 (18:30 -0500)]
bencode: optimize `(*Decoder).parseStringInterface()` (#659)