Unreal SDK: no way to set confirmed reads on the connection (Rust SDK has with_confirmed_reads)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 84/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- cpp, unreal-engine
- Domain
- game-dev, networking
Research direction
Start with UDbConnectionBuilderBase::Build in sdks/unreal/src/SpacetimeDbSdk/Private/Connection/DbConnectionBuilder.cpp, using the Rust implementation in sdks/rust/src/websocket.rs and db_connection.rs as the behavioral reference. Add the option to both the C++ and Blueprint-facing builders, preserving omission when unset and serializing an explicit boolean when configured. Done means confirmed=true or confirmed=false is appended correctly and covered by the relevant Unreal SDK tests.
Written by the indexing model from the issue text.
Description
SpacetimeDB 2.12.0, Unreal SDK from sdks/unreal/src/SpacetimeDbSdk at v2.12.0, UE 5.8.3.
The Rust SDK lets the client choose the read mode explicitly: DbConnectionBuilder::with_confirmed_reads(bool) adds &confirmed=true|false to the subscribe URL (sdks/rust/src/websocket.rs, db_connection.rs). The Unreal SDK has no equivalent: UDbConnectionBuilderBase::Build (Private/Connection/DbConnectionBuilder.cpp) always builds
<uri>/v1/database/<name>/subscribe?compression=<Gzip|None>
so the mode is whatever the server default is for the protocol. With v2.bsatn.spacetimedb (which the Unreal SDK uses, Websocket.cpp) the server default is confirmed = true (client-api/src/routes/subscribe.rs, DEFAULT_CONFIRMED_READS), which is what we want, but we can't pin it from the client.
Why it matters for us: our game logic treats "reducer reply received" as "the transaction is durable" (inventory, trades, store purchases are only shown as done after the reply). If the default ever changes, or a different protocol version is negotiated, Unreal clients would silently switch to replies-before-fsync, while our Rust tools keep true explicitly.
Request: add WithConfirmedReads(bool) to UDbConnectionBuilder (and the Blueprint builder), appending &confirmed=true|false only when it was set, mirroring the Rust SDK. We can send a PR if that helps.
Workaround today: none without patching the SDK (the database name is interpolated into the path, so a query parameter can't be injected cleanly). We rely on the v2 default and check it in our load tests.
- Dominant language
- Rust
- Stars
- 25.5k
- Forks
- 1.1k
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 70
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from clockworklabs/SpacetimeDB
-
Rust SDK: default `brotli` features export C symbols from `cdylib` clientsPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
clockworklabs/SpacetimeDB#6430 ·
Maintainers usually reply within 1 day
-
TS SDK: failed procedure calls reject with a bare string instead of an ErrorPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
clockworklabs/SpacetimeDB#6288 · 1 comment ·
Maintainers usually reply within 1 day
-
TypeScript server `ctx.random()`: first draw of every transaction is heavily biased (signed shift in `pcg32` seeding)Possibly taken @Tyagiquamar claimed this 17 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
clockworklabs/SpacetimeDB#6247 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
clockworklabs/SpacetimeDB#6146 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
clockworklabs/SpacetimeDB#5985 · 1 comment ·
Maintainers usually reply within 1 day
All issues in clockworklabs/SpacetimeDB
Similar issues
-
priority: low ☕️ type: bug 🐛
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
area:docs documentation good first issue priority:medium
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
feature
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
calagopus/panel#285 · 1 comment ·
Maintainers usually reply within 1 day
-
agent-self
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
yologdev/yoyo-evolve#1117 · 1 comment ·
-
[Bug]: streamed Responses API flex_unavailable error maps to 500 InternalServerError instead of 429Openllm translation
Difficulty 2/5 Under an hour Newbie friendliness 85/100
BerriAI/litellm#49736 · 1 comment ·
Maintainers usually reply within 1 day