Shankar
c17ea577e7
I-003: job timeout reaper closes AwaitingCSR/AwaitingApproval gap
Add 11th always-on scheduler loop that transitions jobs stuck in
AwaitingCSR (default 24h TTL) or AwaitingApproval (default 168h TTL)
to Failed. I-001's retry loop then auto-promotes eligible Failed jobs
back to Pending. No new status enum, no schema migration.
- JobRepository.ListTimedOutAwaitingJobs with per-status cutoff WHERE
- JobService.ReapTimedOutJobs mirrors RetryFailedJobs structure
- Scheduler jobTimeoutLoop with atomic.Bool idempotency guard, 2m
per-tick context, WaitGroup shutdown drain
- Config: CERTCTL_JOB_TIMEOUT_INTERVAL (10m), CERTCTL_JOB_AWAITING_CSR_TIMEOUT
(24h), CERTCTL_JOB_AWAITING_APPROVAL_TIMEOUT (168h)
- Audit event per transition: actor=system, actorType=System,
action=job_timeout, details={old_status, new_status, timeout_reason,
age_hours}
- 14 new tests: 3 config, 7 service, 4 scheduler
2026-04-19 01:37:18 +00:00
..
2026-03-27 22:53:46 -04:00
2026-03-27 21:35:22 -04:00
2026-04-18 01:25:20 +00:00
2026-04-18 01:25:20 +00:00
2026-03-15 00:25:01 -04:00
2026-04-18 01:20:46 +00:00
2026-04-16 00:06:34 -04:00
2026-04-16 00:06:34 -04:00
2026-04-18 22:20:25 +00:00
2026-04-18 22:20:25 +00:00
2026-04-18 00:29:37 +00:00
2026-04-18 00:29:37 +00:00
2026-04-18 00:29:37 +00:00
2026-04-15 23:01:00 -04:00
2026-04-15 23:01:00 -04:00
2026-04-18 01:25:20 +00:00
2026-04-09 23:09:40 -04:00
2026-04-04 01:09:53 -04:00
2026-04-18 01:25:20 +00:00
2026-03-20 20:39:49 -04:00
2026-03-20 20:39:49 -04:00
2026-04-04 00:20:13 -04:00
2026-03-30 14:10:42 -04:00
2026-03-30 14:10:42 -04:00
2026-03-28 21:18:35 -04:00
2026-03-28 21:25:25 -04:00
2026-04-18 22:20:25 +00:00
2026-04-18 22:20:25 +00:00
2026-03-25 15:31:06 -04:00
2026-04-15 21:05:14 -04:00
2026-03-28 16:16:19 -04:00
2026-03-30 00:51:18 -04:00
2026-04-15 21:45:45 -04:00
2026-04-15 21:45:45 -04:00
2026-04-15 21:05:14 -04:00
2026-04-15 21:05:14 -04:00
2026-04-17 05:36:29 +00:00
2026-04-17 05:36:29 +00:00
2026-04-17 05:36:29 +00:00
2026-04-18 00:46:58 +00:00
2026-04-18 00:46:58 +00:00
2026-04-19 01:37:18 +00:00
2026-04-19 01:37:18 +00:00
2026-04-16 22:22:51 +00:00
2026-04-18 02:34:14 +00:00
2026-04-18 02:34:14 +00:00
2026-04-18 01:20:46 +00:00
2026-04-18 01:20:46 +00:00
2026-04-18 01:10:06 +00:00
2026-04-18 01:10:06 +00:00
2026-04-18 14:55:56 +00:00
2026-04-18 14:55:56 +00:00
2026-04-18 01:10:06 +00:00
2026-04-18 01:10:06 +00:00
2026-04-15 00:22:57 -04:00
2026-04-15 21:05:14 -04:00
2026-04-18 00:29:37 +00:00
2026-04-18 00:29:37 +00:00
2026-04-18 00:29:37 +00:00
2026-04-16 22:22:51 +00:00
2026-04-16 22:22:51 +00:00
2026-04-18 22:20:25 +00:00
2026-03-25 20:55:48 -04:00
2026-03-24 12:17:24 -04:00
2026-04-18 16:01:40 +00:00
2026-04-18 16:01:40 +00:00
2026-04-18 01:10:06 +00:00
2026-04-18 01:10:06 +00:00
2026-04-19 01:37:18 +00:00
2026-04-19 01:37:18 +00:00
2026-03-27 21:11:16 -04:00