CI flake recurrence: ConcurrentWriterTest SQLITE_BUSY past busy_timeout=30s (run #166) #65

Closed
opened 2026-08-07 15:10:24 +02:00 by thecrealm · 0 comments
Owner

Run #166 failed concurrent_writers_never_surface_sqlite_busy with SQLITE_BUSY despite e938bf5's 30s busy_timeout (which itself followed run #158's escape past 5s). SQLite's busy handler is not a fair queue: under sustained contention (8 writers x 50 page-encrypted transactions on the DinD disk, cargo builds eating CPU concurrently) a tail writer can starve past any finite timeout, so raising it again is whack-a-mole. CR-17 spirit (#54): public ops must wait, never crash. Candidate fix: serialize outermost transactions through a fair in-process lock in PersistentConnectionDriver (matches the Android framework driver's serialized-writes posture noted in the #54 D-entry; busy_timeout stays as the cross-process backstop). WAL remains rejected per the D-log.

Run #166 failed concurrent_writers_never_surface_sqlite_busy with SQLITE_BUSY despite e938bf5's 30s busy_timeout (which itself followed run #158's escape past 5s). SQLite's busy handler is not a fair queue: under sustained contention (8 writers x 50 page-encrypted transactions on the DinD disk, cargo builds eating CPU concurrently) a tail writer can starve past any finite timeout, so raising it again is whack-a-mole. CR-17 spirit (#54): public ops must wait, never crash. Candidate fix: serialize outermost transactions through a fair in-process lock in PersistentConnectionDriver (matches the Android framework driver's serialized-writes posture noted in the #54 D-entry; busy_timeout stays as the cross-process backstop). WAL remains rejected per the D-log.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thecrealm/katrix#65
No description provided.