Pending ladder: a hash-named release of several pieces gets a lone target
The edge gave an unnamed release a "lone" probe target only when it had exactly one file, so a release of several random-named pieces (Bob's, 1.55M rows in five groups) reached the pending store with no target at all: never claimed, never named by a twin, its class never learned. candidates_of now takes the first random-named file when there is no par2, archive or 7z volume. The batch store writes a finished release without a target as exhausted instead of waiting, and leaves it out of its class's waiting count. LOG.md (140). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
66980829dc
commit
294f2d73ba
3 files changed
+77
-10
No files matched your search
@@ -538,6 +538,38 @@ test.group('BatchStore', (group) => {
|
||||
assert.include(await db.from('pending_releases').firstOrFail(), { files: 2, segments: '5' })
|
||||
})
|
||||
|
||||
test('a finished unnamed release without a probe target is exhausted at once, not waiting', async ({
|
||||
assert,
|
||||
}) => {
|
||||
const { rangeId, nodeId } = await rangeIn(GROUP, 1)
|
||||
// Two hash-named pieces: the edge gives the first a lone target; without one the ladder could never claim it.
|
||||
const batch = batchOf(GROUP, 1, [
|
||||
...upload(
|
||||
10,
|
||||
'9e7fc2741cdd450287aff2733ca4c193',
|
||||
4,
|
||||
'b3a75d234aa73891e78a70fc1f5496b1 [1/2]',
|
||||
'2026-10-05T10:00:00Z'
|
||||
),
|
||||
...upload(
|
||||
20,
|
||||
'c5ebdd5487f5b132c76e8d5c2572e560',
|
||||
4,
|
||||
'b3a75d234aa73891e78a70fc1f5496b1 [2/2]',
|
||||
'2026-10-05T10:01:00Z'
|
||||
),
|
||||
])
|
||||
assert.lengthOf(batch.releases, 1)
|
||||
assert.isFalse(batch.releases[0].readable)
|
||||
const stored = await BatchStore.store(rangeId, nodeId, { ...batch, candidates: [] })
|
||||
assert.include(stored, { releases: 1, newReleases: 0, candidates: 0, pending: 1 })
|
||||
const pending = await db.from('pending_releases').firstOrFail()
|
||||
assert.include(pending, { files: 2, finished: true, status: 3 })
|
||||
assert.deepEqual(pending.candidates, [])
|
||||
const klass = await db.from('pending_classes').firstOrFail()
|
||||
assert.include(klass, { waiting: 0 })
|
||||
})
|
||||
|
||||
test("an album's members stay findable by their own names (release_texts kind member)", async ({
|
||||
assert,
|
||||
}) => {
|
||||
|
||||
Reference in new issue
Block a user