SendQueueBehaviourTest.restart_resumes_the_attachment_chain starved in CI #340 (60s runTest budget, phase-1 load) #122

Closed
opened 2026-08-25 16:42:48 +02:00 by thecrealm · 2 comments
Owner

CI #340 (commit 846b1e1): UncompletedCoroutinesError after 1m in :katrix-testkit:allTests during build phase 1 — the #74/D33 starvation shape, on a test deflaked once before (165b510). Green 3/3 locally at the same commit; nothing in 846b1e1 (CSPRNG seam, D71) plausibly blocks — JVM SecureRandom nextBytes is /dev/urandom, non-blocking. Watch: if it recurs under CI contention, either move testkit's jvmTest to the phase-2 quiet-runner list (D33 pattern) or raise this test's runTest budget.

CI #340 (commit 846b1e1): UncompletedCoroutinesError after 1m in :katrix-testkit:allTests during build phase 1 — the #74/D33 starvation shape, on a test deflaked once before (165b510). Green 3/3 locally at the same commit; nothing in 846b1e1 (CSPRNG seam, D71) plausibly blocks — JVM SecureRandom nextBytes is /dev/urandom, non-blocking. Watch: if it recurs under CI contention, either move testkit's jvmTest to the phase-2 quiet-runner list (D33 pattern) or raise this test's runTest budget.
Author
Owner

Likely root cause found: the D71 CSPRNG seam's JVM actual used new SecureRandom(), whose FIRST seed can come from /dev/random — blocking in an entropy-starved DinD container. #122's first occurrence was on that very commit (CI #340), and CI #348/#352 wedged in the session-heavy store/appservice suites (many pickle-key draws). Fixed by NativePRNGNonBlocking (urandom for seed and draws) with fallback; if the next runs stay clean this closes.

Likely root cause found: the D71 CSPRNG seam's JVM actual used new SecureRandom(), whose FIRST seed can come from /dev/random — blocking in an entropy-starved DinD container. #122's first occurrence was on that very commit (CI #340), and CI #348/#352 wedged in the session-heavy store/appservice suites (many pickle-key draws). Fixed by NativePRNGNonBlocking (urandom for seed and draws) with fallback; if the next runs stay clean this closes.
Author
Owner

Correction: the CI #348/#352 wedges are NOT the /dev/random block — 352's final log shows the DinD daemon died mid-run (docker socket unreachable at kill; no test ever failed), tracked as the new runner-health issue. The NativePRNGNonBlocking change stands as correct hygiene, and this issue's original phase-1 starvation (CI #340) remains plausibly entropy/contention; reopen only if it recurs.

Correction: the CI #348/#352 wedges are NOT the /dev/random block — 352's final log shows the DinD daemon died mid-run (docker socket unreachable at kill; no test ever failed), tracked as the new runner-health issue. The NativePRNGNonBlocking change stands as correct hygiene, and this issue's original phase-1 starvation (CI #340) remains plausibly entropy/contention; reopen only if it recurs.
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#122
No description provided.