cc-os/plugins/os-adr/eval-c/fixture/project/docs/adr/0004-persist-job-queue-to-s...

28 lines
936 B
Markdown
Raw Normal View History

---
id: "0004"
date: 2026-02-18
status: Accepted
supersedes:
superseded-by:
affected-paths: [taskq/queue.py, taskq/persistence.py]
affected-components: [queue, persistence]
---
# 0004 — Persist job queue to SQLite; survive process restarts
## Context
In-memory queue loses all pending jobs on restart. Clients resubmit, causing duplicates and lost work.
## Decision
All enqueued jobs persisted to local SQLite database (taskq.db). On startup, reload pending jobs from disk. Transaction isolation ensures no jobs are lost mid-processing.
## Consequences
Jobs survive restarts. Startup slower (disk IO). Must coordinate restart with in-flight execution to avoid double-processing. Query performance on large queues depends on SQLite optimization.
## Alternatives rejected
In-memory with RDB snapshots rejected: complexity without durability guarantee. Remote store (PostgreSQL) rejected: too heavyweight for single-user queue.