Skip to content

docs(self-hosting): promote postgres from experimental to recommended OSS multi-node backend#5341

Open
MasterPtato wants to merge 1 commit into
stack/slopfix-fix-self-host-repair-dev-compose-generation-kitchen-sink-serverful-runner-and-postgres-udb-bootstrap-wpvkrymufrom
stack/slopfix-docs-self-hosting-promote-postgres-from-experimental-to-recommended-oss-multi-node-backend-zsmysquk
Open

docs(self-hosting): promote postgres from experimental to recommended OSS multi-node backend#5341
MasterPtato wants to merge 1 commit into
stack/slopfix-fix-self-host-repair-dev-compose-generation-kitchen-sink-serverful-runner-and-postgres-udb-bootstrap-wpvkrymufrom
stack/slopfix-docs-self-hosting-promote-postgres-from-experimental-to-recommended-oss-multi-node-backend-zsmysquk

Conversation

@MasterPtato

Copy link
Copy Markdown
Contributor

No description provided.

@MasterPtato

Copy link
Copy Markdown
Contributor Author

Stack for rivet-dev/rivet

Current stack:

Dependencies:

Get stack: forklift get 5341
Push local edits: forklift submit
Merge when ready: forklift merge 5341

@claude

claude Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Review: Promote PostgreSQL from Experimental to Recommended

This PR updates 12 documentation files to remove the "experimental" label from PostgreSQL and promote it as the production-ready backend for multi-node and multi-region self-hosted deployments. It also removes the unstable_disable_lock_customization config option from Supabase/PlanetScale examples (which was removed from the code), adds new Requirements/Recommendations content to postgres.mdx, and repositions NATS as optional rather than recommended.


website/src/content/docs/self-hosting/postgres.mdx — Missing migration note for removed unstable_disable_lock_customization (breaking upgrade for Supabase/PlanetScale users)

The old troubleshooting section explicitly told users to add unstable_disable_lock_customization: true to their Supabase and PlanetScale configs. The Supabase and PlanetScale config examples also showed this field. This PR removes both the field from the examples and the troubleshooting section that recommended it, without any upgrade note.

The underlying Postgres config struct (engine/packages/config/src/config/db/postgres.rs:34) uses #[serde(deny_unknown_fields)]. This means any user who followed the old docs and has unstable_disable_lock_customization: true in their production config will hit a hard deserialization error on the next Rivet upgrade — the engine will refuse to start with an "unknown field" error.

Suggested fix: Add a note in the Troubleshooting section (or a new "Upgrading" sub-section) like:

Removed option: If your config includes unstable_disable_lock_customization: true, remove it. This option no longer exists and Rivet will fail to start if it is present.


website/src/content/docs/self-hosting/production-checklist.mdx — NATS downgrade from "recommended" to "optional" should be verified against pub/sub latency guarantees

The previous checklist called NATS "recommended" for production because PostgreSQL LISTEN/NOTIFY "has limited throughput." The new text calls it "optional" and says PostgreSQL pub/sub is "sufficient for most deployments."

The PostgreSQL pub/sub implementation (engine/packages/universalpubsub/src/driver/postgres/mod.rs) does use a 1-second polling backstop (POLL_INTERVAL = Duration::from_secs(1)) as a correctness floor. NOTIFY is used as a fast-path doorbell, but if a NOTIFY is dropped or delayed, delivery falls back to the 1-second poll. For actors with tight wake/message latency requirements, this can mean worst-case 1-second latency in degraded conditions.

This is a reasonable trade-off to document, but the downgrading of NATS from "recommended" to "optional" is a notable change in guidance. If this is intentional based on production data showing PostgreSQL pub/sub is reliable enough, the checklist is fine. If there are known workloads (e.g. high-frequency actor wakeups) where NATS is still genuinely better, the "optional" framing may lead some production users to skip it.


Everything else looks clean

  • The multi-region link added in the postgres.mdx Overview section resolves correctly (website/src/content/docs/self-hosting/multi-region.mdx exists).
  • The connection limit formula of nodes × 150 is consistent with the code: each engine node has two deadpool pools of max_size: 64 (one in universaldb, one in universalpubsub) plus 1–2 dedicated listener connections, giving ~130 per node; the 150 multiplier adds reasonable headroom.
  • All "experimental" references have been scrubbed across the 12 changed files — no orphaned occurrences remain.
  • The <Warning><Note> changes, the new Requirements/Recommendations section, and the FoundationDB comparison table updates are all consistent with the promotion claim.

@NathanFlurry NathanFlurry changed the title [slopfix] docs(self-hosting): promote postgres from experimental to recommended OSS multi-node backend docs(self-hosting): promote postgres from experimental to recommended OSS multi-node backend Jun 26, 2026
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