mirror of
https://github.com/clockworklabs/SpacetimeDB.git
synced 2026-05-11 10:29:21 -04:00
b002158db8
## Summary Enable confirmed reads by default for all WebSocket subscriptions and SQL queries. This is a 2.0 breaking change that improves data integrity. ### What changed Previously, subscription updates and SQL results were sent to clients immediately, before the transaction was confirmed durable. A server crash could cause clients to have observed data that was lost. Now the server defaults to `confirmed=true`. Clients receive updates only after durability is confirmed. This adds a small latency cost but guarantees that any data a client receives will survive a server restart. ### Changes **Server (2 files, 2 lines each):** - `subscribe.rs`: `SubscribeQueryParams.confirmed` defaults to `true` - `database.rs`: `SqlQueryParams.confirmed` defaults to `true` **Documentation:** - Migration guide updated with "Confirmed Reads Enabled by Default" section - Added to overview list and quick migration checklist ### Opt-out Clients can opt out by explicitly passing `?confirmed=false` in the WebSocket URL or using `.withConfirmedReads(false)` / `.WithConfirmedReads(false)` / `.with_confirmed_reads(false)` in SDKs. ### Smoketest impact Smoketests that don't explicitly pass `--confirmed` will now get confirmed reads via the server default. This should not cause failures -- confirmed reads only add a small wait for durability confirmation before sending results. The `confirmed_reads.py` smoketest explicitly passes `--confirmed` and continues to work as before. ### SDK impact No SDK changes needed. SDKs only send the `confirmed` query parameter when explicitly set by the user. When not set, the server default applies -- which is now `true`. --------- Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> Co-authored-by: clockwork-labs-bot <bot@clockworklabs.com> Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
⚠️ Internal Crate ⚠️
This crate is intended for internal use only. It is not stable and may change without notice.