Repository navigation
perf(module): stop retaining transient notification rows - #710
Merged
Merged
Conversation
Contributor
Author
|
Merged after adversarial review and repairs. Added subscription markers so notification absence and exact-count assertions wait for committed updates to reach the recorder. All nine checks passed at Comment review passed. No real-client or capacity measurement is claimed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Combat, spell, Speech and emote notifications stay in ordinary tables until event GC deletes them. Dense activity adds retained rows, SDK cache copies and delete updates for messages that clients need once.
Write these five notification types to additive native
*_event_livetables. Keep the legacy table schemas and their GC path. Update Relays and durable tests to observe inserts. Group notifications and retained System Messages keep their existing delivery rules.Part 1 of 6. Base:
main. Merged in stack order. Next: #711.Verification
Notification assertions now wait for a marker on the same subscription stream before checking absence or exact counts.
Two independent adversarial review rounds are complete. No actionable finding remains. The reviewed stack passed offline binding generation, formatting, workspace Clippy with all targets and features, and the Gateway unit and integration test targets. The Gateway binary passed 2,148 tests. Local builds used one job; no local SpacetimeDB instance or load test ran.
All nine checks passed at
2c9e5e07: Module durable tests and Gateway bindings, Runtime Scripts, Rust.Comment review passed for the final changed source, tests, scripts and configuration. Retained protocol and ordering contracts match the code.
Verification limits
A real build-5875 client and capacity measurements were not run. The inherited SDK ordering gap for multiple notifications within one transaction remains; cross-transaction checks do not prove that order. No capacity gain is claimed.
Risk
The Module and Gateway must change together. Stop the Gateway, publish the matching Module to every configured Shard, then start the Gateway. Old Gateways subscribe to the old table names. Native events have no replay after Transport Loss; event inserts still enter the commit log. See
docs/danger-zones.mdfor the upgrade sequence.Models: GPT-6 Astra and GPT-6.1 Sol. Harness: Codex in T3 Code.