mkv/TODO.md
2026-03-07 11:05:05 +01:00

1.4 KiB

mkv TODO

Done

  • SQLite schema + pragmas + ReadPool + WriterHandle (db.rs)
  • Config parsing with validation (config.rs)
  • Error types with axum IntoResponse (error.rs)
  • Consistent hash ring with virtual nodes + stability tests (hasher.rs)
  • Volume HTTP client — key-as-path, no sidecar files (volume.rs)
  • Health checker background task (health.rs)
  • HTTP handlers with pure decision functions extracted (server.rs)
  • CLI with clap subcommands (main.rs)
  • Rebuild tool — recursive nginx autoindex walk (rebuild.rs)
  • Rebalance tool with --dry-run (rebalance.rs)
  • Integration tests — 8 tests against real nginx (Docker Compose)
  • Unit tests — 17 tests (hasher, server pure fns, rebalance planning)
  • Key-as-path simplification (removed content-addressed paths + .key sidecars)

Remaining

Worth doing

  • Typed volume errors — replace String errors in volume.rs with a proper enum
  • Unit tests for db.rs — CRUD round-trip with in-memory SQLite
  • Graceful shutdown — drain in-flight requests, flush writer

Nice to have

  • Metrics — request count, latency histograms, volume error rates
  • Request ID / tracing spans — per-request trace context
  • Config reload — SIGHUP to reload config without restart
  • Rate limiting on list endpoint — prefix scan can be expensive