Matt Joiner
b43987fcc8
Fix up some crashes around piece availability
2021-06-07 13:01:40 +10:00
Matt Joiner
1a27e14391
Don't always force piece reallocation
...
The balancing for unforced pieces may not be exactly what we want yet.
2021-06-07 13:01:39 +10:00
Matt Joiner
95d808d3c5
Use rejiggered missinggo bitmap
2021-06-07 13:01:39 +10:00
Matt Joiner
a26e7f9933
Determine peer max requests based on receive speed
2021-06-07 13:01:39 +10:00
Matt Joiner
86524214f5
Merge maxRequests into localClientReqq
2021-06-07 13:01:39 +10:00
Matt Joiner
42bf6b58a6
Fix in decPieceAvailability when we don't have torrent info
...
Happens when we close a Peer before getting Torrent info.
2021-06-07 13:01:39 +10:00
Matt Joiner
fcc4ef2b95
Fix sqlite piece completion
2021-06-07 13:01:39 +10:00
Matt Joiner
ad298364aa
Add client-level max unverified bytes
2021-06-07 13:01:39 +10:00
Matt Joiner
63b0e42731
Get max unverified bytes working
2021-06-07 13:01:39 +10:00
Matt Joiner
307d6d178f
Prepare to implement max unverified bytes
2021-06-07 13:01:39 +10:00
Matt Joiner
8e9cb9f2be
Do checks for preallocated requests too
...
Otherwise we reserve requests with the assumption that they can be assigned later, and they actually might not be.
2021-06-07 13:01:39 +10:00
Matt Joiner
9dd85e5bd2
Fix non-deterministic test
2021-06-07 13:01:39 +10:00
Matt Joiner
b80e2b08b5
Get request rebalancing working optimally!
2021-06-07 13:01:39 +10:00
Matt Joiner
4e9f707aeb
Move piece allocation to its own func
2021-06-07 13:01:39 +10:00
Matt Joiner
07ba6e9210
New tests and fixes for them
...
Not complete. There's still a request-stealing balancing issue, but it's functional for now.
2021-06-07 13:01:39 +10:00
Matt Joiner
e7c5ed679f
Don't log each applied request
2021-06-07 13:01:39 +10:00
Matt Joiner
26837ee73c
Add a working request strategy test
2021-06-07 13:01:39 +10:00
Matt Joiner
0d4e566fc0
Extract request strategy stuff into a separate module
2021-06-07 13:01:39 +10:00
Matt Joiner
233135493f
Improve num requests per piece status output
2021-06-07 13:01:39 +10:00
Matt Joiner
f19564d597
Improve piece availability status output
2021-06-07 13:01:39 +10:00
Matt Joiner
ef489f4a44
Fixes to reassigning chunks in requests
2021-06-07 13:01:39 +10:00
Matt Joiner
09823b9e36
Rework to improve work stealing and try to thread peers through all request pieces
2021-06-07 13:01:39 +10:00
Matt Joiner
4577e8a3c1
Forgot to remove initial have all state for webseeds
...
Later when the webseed was closed, it was assumed that it had contributed to the piece availability count.
2021-06-07 13:01:39 +10:00
Matt Joiner
16eb8a9693
Do requests every 100ms
2021-06-07 13:01:39 +10:00
Matt Joiner
a2fcce5374
Don't need stable sort
2021-06-07 13:01:39 +10:00
Matt Joiner
fc06909014
Improve naming on storage key
2021-06-07 13:01:39 +10:00
Matt Joiner
875ead3582
Reuse pieceRequestOrder slice
2021-06-07 13:01:39 +10:00
Matt Joiner
99a7cb9291
Missed piece availability code
2021-06-07 13:01:39 +10:00
Matt Joiner
d9172ef277
Comments
2021-06-07 13:01:39 +10:00
Matt Joiner
6d25c99ac6
Ignore pieces for request after accounting for storage
2021-06-07 13:01:39 +10:00
Matt Joiner
b508877d82
Track peer availability at the Torrent-level
2021-06-07 13:01:39 +10:00
Matt Joiner
2d2456249a
Remove unused pieceRequestOrder in Client
2021-06-07 13:01:39 +10:00
Matt Joiner
52e6979457
go mod tidy
2021-06-07 13:01:39 +10:00
Matt Joiner
977a3ec00f
Use multiless with Float64
2021-06-07 13:01:39 +10:00
Matt Joiner
9c9ba1aeac
PeerConn.post becomes PeerConn.write
2021-06-07 13:01:39 +10:00
Matt Joiner
56e2a8a3a6
Fix download rate, status output
2021-06-07 13:01:39 +10:00
Matt Joiner
5f8471e21b
Rework storage.TorrentImpl to support shared capacity key
2021-06-07 13:01:39 +10:00
Matt Joiner
6e97ce952f
Tidy up request and cancel
2021-06-07 13:01:39 +10:00
Matt Joiner
5f437e6b7f
Remove empty file
2021-06-07 13:01:39 +10:00
Matt Joiner
b2c68b314b
Limit outstanding requests
2021-06-07 13:01:39 +10:00
Matt Joiner
0830589b0a
Pass tests with new full-client request strategy implementation
2021-06-07 13:01:39 +10:00
Matt Joiner
56e5d08eff
Log failure to complete metadata
2021-06-07 12:57:42 +10:00
Matt Joiner
f5d2ba37bc
Count peers added from DHT for logging
2021-06-07 12:57:32 +10:00
Matt Joiner
d7c549d2e4
Add TODOs around setting info bytes
2021-06-07 12:57:09 +10:00
Matt Joiner
125d7f0e90
Create go.yml ( #497 )
...
* Create go.yml
* Go version 1.16
* Add benchmarks
* Match CircleCI test coverage
* Add 15 minute timeout
* Don't log to file
* Download modules in separate step, minimize test runs
* Install godo before running torrentfs end-to-end test
* More fixes
* More fixes for GitHub Actions CI
2021-06-07 12:44:51 +10:00
gitpubber
8f6f47a2e0
Added build tags to disable few packages if necessary ( #499 )
2021-05-25 18:48:59 +10:00
Matt Joiner
a60a4c9117
Progress testing without cgo a bit
2021-05-21 15:22:26 +10:00
Matt Joiner
b21aebeaae
Make wal the default for sqlite resource pieces
...
Fixes broken test as a result.
2021-05-17 11:56:10 +10:00
Matt Joiner
7798e2a306
Make synchronous=off the default
2021-05-17 11:56:10 +10:00
Matt Joiner
c585b84126
Set smarter defaults
2021-05-17 11:56:10 +10:00