Skip to content

feat: add system.checkpoints table to track DuckLake checkpoint history#345

Merged
fuziontech merged 4 commits intomainfrom
jh/system-checkpoints-table
Mar 24, 2026
Merged

feat: add system.checkpoints table to track DuckLake checkpoint history#345
fuziontech merged 4 commits intomainfrom
jh/system-checkpoints-table

Conversation

@fuziontech
Copy link
Member

Summary

  • Adds a system.checkpoints DuckLake table that records every checkpoint run
  • Each row captures: started_at, finished_at, duration_ms, status (success/failed), and error (NULL on success)
  • Table is created during checkpointer initialization alongside the existing DuckLake attach
  • Both successful and failed checkpoints are recorded; insert failures are logged but non-fatal

Usage

SELECT * FROM system.checkpoints ORDER BY started_at DESC;

Test plan

  • Existing checkpoint tests pass
  • Server package builds cleanly
  • Manual test with DuckLake: verify rows appear in system.checkpoints after checkpoint interval fires

🤖 Generated with Claude Code

fuziontech and others added 4 commits March 23, 2026 15:40
Records each checkpoint run with started_at, finished_at, duration_ms,
status (success/failed), and error message. Queryable via
`SELECT * FROM system.checkpoints`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- TestCheckpointerRunRecordsSuccess: verifies row insertion with correct
  column values (status, timestamps, duration) and accumulation across runs
- TestCheckpointerRunRecordsFailure: verifies run() handles INSERT errors
  gracefully without panicking (read-only DB)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Without a readiness probe, `kubectl wait --for=condition=available`
returns as soon as the container starts — before the control plane
connects to the config store and runs AutoMigrate. This causes a
race where the seed SQL runs before tables exist, failing with
"relation duckgres_managed_warehouses does not exist".

The /health endpoint on the admin port (9090) only becomes available
after SetupMultiTenant completes (config store connected, tables
migrated, admin server listening), making it an accurate readiness
signal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@fuziontech fuziontech merged commit 03704b1 into main Mar 24, 2026
19 checks passed
@fuziontech fuziontech deleted the jh/system-checkpoints-table branch March 24, 2026 05:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant