Skip to content

docs(deploy): SQLITE_KEEP_DB precondition, changelog backfill, 5.3.0 stamp - #5832

Merged
norman-abramovitz merged 3 commits into
cloudfoundry:developfrom
nabramovitz:norm/docs/sqlite-persistence-keep-db
Aug 20, 2026
Merged

docs(deploy): SQLITE_KEEP_DB precondition, changelog backfill, 5.3.0 stamp#5832
norman-abramovitz merged 3 commits into
cloudfoundry:developfrom
nabramovitz:norm/docs/sqlite-persistence-keep-db

Conversation

@nabramovitz

Copy link
Copy Markdown
Contributor

Field-testing the SQLite persistence guide's litestream lane on a live CF foundation surfaced a failure mode the guide did not cover, plus some release housekeeping.

Docs: SQLITE_KEEP_DB is a hard precondition

Jetstream deletes the SQLite database file at startup unless SQLITE_KEEP_DB=true (datastore.go, NewGooseDBConf). Any restore-before-launch scheme silently loses to that delete: the wrapper restores the database, jetstream removes it moments later, and every boot looks like a fresh install. Under litestream it compounds - the replicator then streams the emptied database over the replica's head, so the backup's latest state is overwritten by the mechanism meant to protect it.

The guide now names this as a second hard precondition next to the stable encryption key, and the wrapper example gained the guards that made the lane debuggable in practice: a replica reachability preflight (litestream initializes replicas before spawning the -exec child, so an unreachable target otherwise blocks jetstream entirely), a time-boxed restore, and restored-size logging (litestream's restore is silent on both success and no-op).

Verified live: with the precondition set, endpoint registration and connected tokens survive repeated cf restart cycles with the same endpoint GUID and no reconnect.

Changelog: backfill fragments since v5.2.0

#5831 landed without a release-notes fragment; added one covering its features (perf-page measurement split, nav debug gate) and fixes (monaco prefetch deferral, 304 accounting), plus this guide update. Also drafted the dependency-updates fragment for the dependabot groups since v5.2.0, deduped against the monaco 0.56 and ESLint 10 entries. ./build/release-notes.sh assemble validates clean.

Release: stamp 5.3.0

Features in the assembled notes make the next release a minor, matching the v5.1.0/v5.2.0 cadence.

Field-testing the litestream lane surfaced a failure mode the guide did
not cover: jetstream deletes the SQLite file at startup unless
SQLITE_KEEP_DB=true, so any restore-before-launch scheme is silently
destroyed and litestream then replicates the emptied database over the
replica's head. Promote SQLITE_KEEP_DB to a hard precondition next to
the stable encryption key, harden the wrapper example (reachability
preflight, time-boxed restore, restored-size logging - litestream's
restore is silent on both success and no-op), and note that the
cell-to-replica network path needs verifying from inside a container,
not from the target side.
The perf-page/nav-gate/sqlite-docs PR (cloudfoundry#5831) landed without a
fragment; add one covering its features and fixes plus the persistence
guide. Draft the dependency-updates fragment for the four dependabot
groups, leaving the monaco 0.56 and ESLint 10 moves to their own
entries.
Features in the notes (perf-page measurement, nav debug gate) make the
next release a minor per the v5.1/v5.2 cadence.

@norman-abramovitz norman-abramovitz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@norman-abramovitz
norman-abramovitz merged commit 3020812 into cloudfoundry:develop Aug 20, 2026
23 checks passed
@nabramovitz
nabramovitz deleted the norm/docs/sqlite-persistence-keep-db branch August 20, 2026 13:40
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.

2 participants