]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
4 weeks agoAdd checks that defers only occur on write locks
Matt Joiner [Tue, 12 Aug 2025 13:29:42 +0000 (23:29 +1000)]
Add checks that defers only occur on write locks

4 weeks agoAdd MetainfoSourcesMerger
Matt Joiner [Tue, 12 Aug 2025 13:27:36 +0000 (23:27 +1000)]
Add MetainfoSourcesMerger

5 weeks agoBreak out file IO abstraction
Matt Joiner [Mon, 11 Aug 2025 06:09:47 +0000 (16:09 +1000)]
Break out file IO abstraction

5 weeks agoDon't panic on non-zero chunk sizes in Client.AddTorrentSpec
Matt Joiner [Mon, 11 Aug 2025 01:19:13 +0000 (11:19 +1000)]
Don't panic on non-zero chunk sizes in Client.AddTorrentSpec

5 weeks agoFix build on Windows
Matt Joiner [Fri, 8 Aug 2025 03:29:22 +0000 (13:29 +1000)]
Fix build on Windows

5 weeks agoMove assertion back to proper place
Matt Joiner [Fri, 8 Aug 2025 02:09:23 +0000 (12:09 +1000)]
Move assertion back to proper place

5 weeks agoImprove webseed part request log message for identifying cache boundaries
Matt Joiner [Thu, 7 Aug 2025 05:48:30 +0000 (15:48 +1000)]
Improve webseed part request log message for identifying cache boundaries

5 weeks agoTODO on stat atomics being out of sync
Matt Joiner [Thu, 7 Aug 2025 05:48:06 +0000 (15:48 +1000)]
TODO on stat atomics being out of sync

5 weeks agoConvert cmd/torrent2 to bargle/v2
Matt Joiner [Thu, 7 Aug 2025 05:47:44 +0000 (15:47 +1000)]
Convert cmd/torrent2 to bargle/v2

5 weeks agoLower webseed read chunks log level when peer is closed
Matt Joiner [Wed, 6 Aug 2025 12:56:36 +0000 (22:56 +1000)]
Lower webseed read chunks log level when peer is closed

5 weeks agoFix proposed and existing cancelled webseed requests colliding in priority heap
Matt Joiner [Wed, 6 Aug 2025 10:36:29 +0000 (20:36 +1000)]
Fix proposed and existing cancelled webseed requests colliding in priority heap

5 weeks agoClear pprof labels in spawned webseed requests
Matt Joiner [Wed, 6 Aug 2025 10:34:56 +0000 (20:34 +1000)]
Clear pprof labels in spawned webseed requests

5 weeks agoProbably fix a nasty buffer size performance issue with rate limited readers
Matt Joiner [Wed, 6 Aug 2025 10:34:40 +0000 (20:34 +1000)]
Probably fix a nasty buffer size performance issue with rate limited readers

5 weeks agoSkip download rate limited reader wrapping if DownloadRateLimiter is nil
Matt Joiner [Wed, 6 Aug 2025 10:34:08 +0000 (20:34 +1000)]
Skip download rate limited reader wrapping if DownloadRateLimiter is nil

5 weeks agoFix new warning in piece hashing due to new file piece WriteTo
Matt Joiner [Wed, 6 Aug 2025 10:25:27 +0000 (20:25 +1000)]
Fix new warning in piece hashing due to new file piece WriteTo

5 weeks agoFix Torrent.close race in test
Matt Joiner [Wed, 6 Aug 2025 10:22:01 +0000 (20:22 +1000)]
Fix Torrent.close race in test

5 weeks agoFix chansync dep
Matt Joiner [Tue, 5 Aug 2025 14:42:29 +0000 (00:42 +1000)]
Fix chansync dep

5 weeks agoTry to show context cancellation cause after io.ReadFull
Matt Joiner [Tue, 5 Aug 2025 14:00:32 +0000 (00:00 +1000)]
Try to show context cancellation cause after io.ReadFull

5 weeks agoSort webseed request heap deterministically
Matt Joiner [Tue, 5 Aug 2025 13:59:44 +0000 (23:59 +1000)]
Sort webseed request heap deterministically

5 weeks agoCode comments
Matt Joiner [Tue, 5 Aug 2025 12:52:10 +0000 (22:52 +1000)]
Code comments

5 weeks agoRemove debug log showing up in profiling
Matt Joiner [Tue, 5 Aug 2025 12:51:53 +0000 (22:51 +1000)]
Remove debug log showing up in profiling

5 weeks agoPedantic optimization of Torrent.AllowDataDownload and AllowDataUpload
Matt Joiner [Tue, 5 Aug 2025 12:51:28 +0000 (22:51 +1000)]
Pedantic optimization of Torrent.AllowDataDownload and AllowDataUpload

5 weeks agoSet cached piece completion directly on piece hashed
Matt Joiner [Tue, 5 Aug 2025 12:50:08 +0000 (22:50 +1000)]
Set cached piece completion directly on piece hashed

5 weeks agoFix premature return from GetRequestablePieces iterator
Matt Joiner [Tue, 5 Aug 2025 12:45:56 +0000 (22:45 +1000)]
Fix premature return from GetRequestablePieces iterator

Was missed in earlier refactor

5 weeks agoSimplify part file promotion and demotion
Matt Joiner [Tue, 5 Aug 2025 12:45:13 +0000 (22:45 +1000)]
Simplify part file promotion and demotion

5 weeks agoReplace nasty SI file size prefix
Matt Joiner [Tue, 5 Aug 2025 12:43:41 +0000 (22:43 +1000)]
Replace nasty SI file size prefix

5 weeks agoPropagate better webseed cancellation errors and cancel requests on peer context
Matt Joiner [Tue, 5 Aug 2025 12:42:59 +0000 (22:42 +1000)]
Propagate better webseed cancellation errors and cancel requests on peer context

5 weeks agoFix pointless double open on unhandled open for write errors
Matt Joiner [Tue, 5 Aug 2025 12:41:13 +0000 (22:41 +1000)]
Fix pointless double open on unhandled open for write errors

5 weeks agoExpose TORRENT_WEBSEED_REQUEST_CHUNK_SIZE
Matt Joiner [Tue, 5 Aug 2025 12:40:18 +0000 (22:40 +1000)]
Expose TORRENT_WEBSEED_REQUEST_CHUNK_SIZE

5 weeks agoFix very rare double Torrent close panic
Matt Joiner [Tue, 5 Aug 2025 12:38:40 +0000 (22:38 +1000)]
Fix very rare double Torrent close panic

5 weeks agoExtract webseed end request calculation and avoid bug for now
Matt Joiner [Tue, 5 Aug 2025 10:02:18 +0000 (20:02 +1000)]
Extract webseed end request calculation and avoid bug for now

5 weeks agoMake webseedUrlKey more ergonomic to use
Matt Joiner [Tue, 5 Aug 2025 10:01:13 +0000 (20:01 +1000)]
Make webseedUrlKey more ergonomic to use

5 weeks agoEnsure Torrent.pieceCompletionChanged always runs on piece init
Matt Joiner [Tue, 5 Aug 2025 09:59:32 +0000 (19:59 +1000)]
Ensure Torrent.pieceCompletionChanged always runs on piece init

5 weeks agoIgnore pieces with unknown completion for requests
Matt Joiner [Tue, 5 Aug 2025 09:56:39 +0000 (19:56 +1000)]
Ignore pieces with unknown completion for requests

5 weeks agoSet deferred unique actions map to nil rather than clear
Matt Joiner [Tue, 5 Aug 2025 09:55:16 +0000 (19:55 +1000)]
Set deferred unique actions map to nil rather than clear

5 weeks agoAdd TORRENT_MAX_ACTIVE_PIECE_HASHERS
Matt Joiner [Tue, 5 Aug 2025 09:54:51 +0000 (19:54 +1000)]
Add TORRENT_MAX_ACTIVE_PIECE_HASHERS

5 weeks agoExtra pedantry in chunkIndexSpec
Matt Joiner [Tue, 5 Aug 2025 05:49:34 +0000 (15:49 +1000)]
Extra pedantry in chunkIndexSpec

5 weeks agoAdd request-strategy.Btree.Contains
Matt Joiner [Tue, 5 Aug 2025 05:49:09 +0000 (15:49 +1000)]
Add request-strategy.Btree.Contains

We'll need it later when we use piece request order instead of Torrent._pendingPieces.

5 weeks agoConvert GetRequestablePieces to an iterator
Matt Joiner [Tue, 5 Aug 2025 02:32:30 +0000 (12:32 +1000)]
Convert GetRequestablePieces to an iterator

5 weeks agoFix panic in piece request order length status
Matt Joiner [Tue, 5 Aug 2025 02:30:40 +0000 (12:30 +1000)]
Fix panic in piece request order length status

5 weeks agoUse unique.Handle for webseedUrlKey
Matt Joiner [Mon, 4 Aug 2025 23:55:05 +0000 (09:55 +1000)]
Use unique.Handle for webseedUrlKey

Should greatly improve apriori map lookup performance.

5 weeks agoInclude webseed update reason and some extra debug stuff
Matt Joiner [Mon, 4 Aug 2025 12:15:41 +0000 (22:15 +1000)]
Include webseed update reason and some extra debug stuff

6 weeks agoInclude CF-Cache-Status in webseed debug
Matt Joiner [Mon, 4 Aug 2025 10:27:59 +0000 (20:27 +1000)]
Include CF-Cache-Status in webseed debug

6 weeks agoTons of webseed optimizations
Matt Joiner [Fri, 1 Aug 2025 13:51:28 +0000 (23:51 +1000)]
Tons of webseed optimizations

Avoid extra allocation in firstDirtyChunk
Allow multiple requests per file (now called slices or webseed chunks)
Reduce many allocations and extra work in webseed heap ordering
Add webseed request update pprof labels
Use a larger buffer for copying webseed response parts

6 weeks agoSwitch segments to use iterators
Matt Joiner [Fri, 1 Aug 2025 08:20:13 +0000 (18:20 +1000)]
Switch segments to use iterators

Trying to reduce allocations

6 weeks agoSwitch to segments.Index.LocateIter everywhere
Matt Joiner [Fri, 1 Aug 2025 06:11:50 +0000 (16:11 +1000)]
Switch to segments.Index.LocateIter everywhere

6 weeks agoAvoid Iterator allocation
Matt Joiner [Fri, 1 Aug 2025 05:51:52 +0000 (15:51 +1000)]
Avoid Iterator allocation

6 weeks agoUse unique.Handle for piece order infohashes
Matt Joiner [Fri, 1 Aug 2025 03:38:51 +0000 (13:38 +1000)]
Use unique.Handle for piece order infohashes

6 weeks agoMake Client.Close more responsive
Matt Joiner [Fri, 1 Aug 2025 03:04:30 +0000 (13:04 +1000)]
Make Client.Close more responsive

Stop updating webseed requests ASAP.
Set the Client closed event outside of the Client lock.
Make Client initialization more consistent for Close.

6 weeks agogorond
Matt Joiner [Thu, 31 Jul 2025 13:18:44 +0000 (23:18 +1000)]
gorond

6 weeks agoUpdate missinggo/v2 to fix stm test errors
Matt Joiner [Thu, 31 Jul 2025 13:18:33 +0000 (23:18 +1000)]
Update missinggo/v2 to fix stm test errors

6 weeks agoTruncate webseed requests to response body cache boundaries
Matt Joiner [Thu, 31 Jul 2025 01:54:39 +0000 (11:54 +1000)]
Truncate webseed requests to response body cache boundaries

6 weeks agoRejigger the webseed debug logging
Matt Joiner [Thu, 31 Jul 2025 01:54:06 +0000 (11:54 +1000)]
Rejigger the webseed debug logging

6 weeks agoPrevent webseed requests when torrent data download disallowed
Matt Joiner [Thu, 31 Jul 2025 01:52:19 +0000 (11:52 +1000)]
Prevent webseed requests when torrent data download disallowed

6 weeks agoTidy
Matt Joiner [Thu, 31 Jul 2025 01:50:52 +0000 (11:50 +1000)]
Tidy

6 weeks agoDrop torrents on Client.Close not just close them
Matt Joiner [Thu, 31 Jul 2025 01:49:14 +0000 (11:49 +1000)]
Drop torrents on Client.Close not just close them

6 weeks agoAdd separate MetainfoSourcesClient
Matt Joiner [Thu, 31 Jul 2025 01:16:27 +0000 (11:16 +1000)]
Add separate MetainfoSourcesClient

6 weeks agoExpose TORRENT_WEBSEED_HOST_REQUEST_CONCURRENCY
Matt Joiner [Wed, 30 Jul 2025 07:47:31 +0000 (17:47 +1000)]
Expose TORRENT_WEBSEED_HOST_REQUEST_CONCURRENCY

6 weeks agoAggregate connection stats by peer implementation
Matt Joiner [Wed, 30 Jul 2025 07:46:57 +0000 (17:46 +1000)]
Aggregate connection stats by peer implementation

6 weeks agoFix panicif.Nil not working correctly
Matt Joiner [Tue, 29 Jul 2025 04:03:48 +0000 (14:03 +1000)]
Fix panicif.Nil not working correctly

7 weeks agoSet piece incomplete if part file size incorrect
Matt Joiner [Mon, 28 Jul 2025 03:23:22 +0000 (13:23 +1000)]
Set piece incomplete if part file size incorrect

7 weeks agoMake peer conns minimize request overlap with webseeds
Matt Joiner [Mon, 28 Jul 2025 02:17:50 +0000 (12:17 +1000)]
Make peer conns minimize request overlap with webseeds

7 weeks agoUpdate code comments
Matt Joiner [Mon, 28 Jul 2025 02:16:19 +0000 (12:16 +1000)]
Update code comments

7 weeks agoWebseeds favour requesting partial files
Matt Joiner [Wed, 23 Jul 2025 03:44:10 +0000 (13:44 +1000)]
Webseeds favour requesting partial files

7 weeks agofile storage: Rename anyway if both files exist
Matt Joiner [Wed, 23 Jul 2025 03:42:46 +0000 (13:42 +1000)]
file storage: Rename anyway if both files exist

7 weeks agoSkip holes in file piece WriteTo
Matt Joiner [Mon, 21 Jul 2025 12:06:19 +0000 (22:06 +1000)]
Skip holes in file piece WriteTo

Overkill optimization, saves about 10% reading from disk in test. Probably not worth it.

7 weeks agoIgnore webseed request start offset in prioritization
Matt Joiner [Mon, 21 Jul 2025 12:04:34 +0000 (22:04 +1000)]
Ignore webseed request start offset in prioritization

7 weeks agoFix peer request handling concurrency
Matt Joiner [Tue, 22 Jul 2025 13:17:41 +0000 (23:17 +1000)]
Fix peer request handling concurrency

7 weeks agoLimit piece hashers per client
Matt Joiner [Mon, 21 Jul 2025 12:01:38 +0000 (22:01 +1000)]
Limit piece hashers per client

8 weeks agoTry Claude branch of possum to fix Windows CI
Matt Joiner [Sun, 20 Jul 2025 02:52:00 +0000 (12:52 +1000)]
Try Claude branch of possum to fix Windows CI

8 weeks agoDon't build ./fs on Windows
Matt Joiner [Sun, 20 Jul 2025 02:47:26 +0000 (12:47 +1000)]
Don't build ./fs on Windows

8 weeks agofs test: Get interrupt to work as expected
Matt Joiner [Sun, 20 Jul 2025 02:08:56 +0000 (12:08 +1000)]
fs test: Get interrupt to work as expected

8 weeks agoCI: Add 20 minute timeout
Matt Joiner [Sun, 20 Jul 2025 02:10:06 +0000 (12:10 +1000)]
CI: Add 20 minute timeout

8 weeks agoCount actual webseed data read rather than expected
Matt Joiner [Sun, 20 Jul 2025 01:41:14 +0000 (11:41 +1000)]
Count actual webseed data read rather than expected

Note they probably never differ at this point but still.

8 weeks agoCoalesce synchronous webseed request updates
Matt Joiner [Sat, 19 Jul 2025 11:45:58 +0000 (21:45 +1000)]
Coalesce synchronous webseed request updates

8 weeks agoFix piece hashing expvars update condition
Matt Joiner [Sat, 19 Jul 2025 11:45:34 +0000 (21:45 +1000)]
Fix piece hashing expvars update condition

8 weeks agoSkip smartban hashing if there's no peers to ban for a piece
Matt Joiner [Sat, 19 Jul 2025 11:44:39 +0000 (21:44 +1000)]
Skip smartban hashing if there's no peers to ban for a piece

Also take smartban.Cache lock only once per piece when forgetting blocks

8 weeks agoImplement io.WriterTo for file storage pieces
Matt Joiner [Sat, 19 Jul 2025 11:41:18 +0000 (21:41 +1000)]
Implement io.WriterTo for file storage pieces

8 weeks agogo mod tidy && gorond
Matt Joiner [Fri, 18 Jul 2025 13:22:18 +0000 (23:22 +1000)]
go mod tidy && gorond

8 weeks agoFix webseed request update timer callback queuing when it takes too long
Matt Joiner [Fri, 18 Jul 2025 13:10:32 +0000 (23:10 +1000)]
Fix webseed request update timer callback queuing when it takes too long

8 weeks agoFix panic when setting info bytes after Torrent closed
Matt Joiner [Fri, 18 Jul 2025 13:08:33 +0000 (23:08 +1000)]
Fix panic when setting info bytes after Torrent closed

8 weeks agoAllocate Torrent file segments index just once
Matt Joiner [Fri, 18 Jul 2025 13:08:15 +0000 (23:08 +1000)]
Allocate Torrent file segments index just once

2 months agoClaude moved PeerConn methods from peer.go to peerconn.go
Matt Joiner [Wed, 16 Jul 2025 04:59:18 +0000 (14:59 +1000)]
Claude moved PeerConn methods from peer.go to peerconn.go

2 months agoMove requestState into PeerConn so cancelAllRequests doesn't crash
Matt Joiner [Tue, 15 Jul 2025 06:36:01 +0000 (16:36 +1000)]
Move requestState into PeerConn so cancelAllRequests doesn't crash

2 months agoDebug webseed read length after cancellation
Matt Joiner [Mon, 14 Jul 2025 12:16:14 +0000 (22:16 +1000)]
Debug webseed read length after cancellation

2 months agoSet webseed.PrintDebug from environment
Matt Joiner [Mon, 14 Jul 2025 12:15:55 +0000 (22:15 +1000)]
Set webseed.PrintDebug from environment

2 months agoFix shortened webseed request debugging condition
Matt Joiner [Mon, 14 Jul 2025 12:15:34 +0000 (22:15 +1000)]
Fix shortened webseed request debugging condition

2 months agoRemove useless error type debugging
Matt Joiner [Mon, 14 Jul 2025 12:15:11 +0000 (22:15 +1000)]
Remove useless error type debugging

2 months agoFix logging of method ptr instead of calling it
Matt Joiner [Mon, 14 Jul 2025 12:14:57 +0000 (22:14 +1000)]
Fix logging of method ptr instead of calling it

2 months agoReduce webseed download waste
Matt Joiner [Mon, 14 Jul 2025 06:05:02 +0000 (16:05 +1000)]
Reduce webseed download waste

Don't close request on cancellation, try to drain it.

Shorten webseed requests to wanted region.

2 months agoPanic on unhandled completion error
Matt Joiner [Mon, 14 Jul 2025 05:38:41 +0000 (15:38 +1000)]
Panic on unhandled completion error

2 months agoFix code comment
Matt Joiner [Mon, 14 Jul 2025 05:37:37 +0000 (15:37 +1000)]
Fix code comment

2 months agoFix test that sets zero download rate limiter
Matt Joiner [Mon, 14 Jul 2025 05:37:10 +0000 (15:37 +1000)]
Fix test that sets zero download rate limiter

2 months agoRemove rate limit test
Matt Joiner [Mon, 14 Jul 2025 05:36:08 +0000 (15:36 +1000)]
Remove rate limit test

It's old and too hard to update to new Read implementation

2 months agoSet pieces incomplete when files go missing or are truncated
Matt Joiner [Mon, 14 Jul 2025 05:34:15 +0000 (15:34 +1000)]
Set pieces incomplete when files go missing or are truncated

2 months agoReduce ban logging
Matt Joiner [Mon, 14 Jul 2025 05:32:31 +0000 (15:32 +1000)]
Reduce ban logging

2 months agoMisc webseed tweaks
Matt Joiner [Fri, 11 Jul 2025 05:02:33 +0000 (15:02 +1000)]
Misc webseed tweaks

2 months agoFix webseed max discard chunk condition
Matt Joiner [Fri, 11 Jul 2025 04:31:18 +0000 (14:31 +1000)]
Fix webseed max discard chunk condition

2 months agoRemove unused field
Matt Joiner [Fri, 11 Jul 2025 04:30:15 +0000 (14:30 +1000)]
Remove unused field

2 months agoAlter log levels webseed chunk reading errors for ENHANCE_YOUR_CALM
Matt Joiner [Fri, 11 Jul 2025 04:30:03 +0000 (14:30 +1000)]
Alter log levels webseed chunk reading errors for ENHANCE_YOUR_CALM