Prober: claim only candidates of settled releases, without the join
Test and deploy / test (push) Successful in 48s
Test and deploy / edge (push) Successful in 1m59s
Test and deploy / deploy (push) Failing after 4m2s

The settler marks a settled release's candidates ready (and unreadable when
it had no readable name). Claims took the candidates by joining releases
from random points of the queue; in its newer half nothing had settled, so
a slice scanned to the end (0.3 s each, 20 slices and 5 tiers a claim) and
the prober stood still: 2.4M waiting, 0 probed a minute. Now an index over
the claimable rows only, the slices drawn within them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daan MeijerandClaude Opus 5.5 committed 2026-10-12 12:12:59 +02:00
1 parent 1866e38c25
commit cdc1cdc0cc
5 files changed
+63 -11

No files matched your search

+5 -1
View File
@@ -169,7 +169,7 @@ export class ProbeCacheSchema extends BaseModel {
}
export class ProbeCandidateSchema extends BaseModel {
static $columns = ['createdAt', 'file', 'id', 'kind', 'messageId', 'releaseId', 'status'] as const
static $columns = ['createdAt', 'file', 'id', 'kind', 'messageId', 'ready', 'releaseId', 'status', 'unreadable'] as const
$columns = ProbeCandidateSchema.$columns
@column.dateTime({ autoCreate: true })
declare createdAt: DateTime
@@ -182,9 +182,13 @@ export class ProbeCandidateSchema extends BaseModel {
@column()
declare messageId: string
@column()
declare ready: boolean
@column()
declare releaseId: bigint | number
@column()
declare status: string
@column()
declare unreadable: boolean
}
export class RangeSchema extends BaseModel {