Fix SDK bug with overlapping subscriptions #2711
Merged
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.
Description of Changes
Prior to this commit, the Rust client SDK was dropping all
TableUpdates other than the last within a givenDatabaseUpdate, leading to incorrect client cache states, particularly incorrect row multiplicities. This was reported by @lakmatiol in the public Discord, who was kind enough to provide us with a minimal reproducer,https://github.com/lavirlifiliol/spacetime-repro .
This commit fixes the bug by combining
TableUpdates rather than overwriting them. It also adds a new SDK test which does the same thing as the provided reproducer.Note that this fix affects both the codegen and the SDK itself, meaning we should hold it until a minor version bump.
For ease of review, I've separated the real changes (the bugfix and test) from the autogenerated changes (running
spacetime generatefor various clients, and also updating an insta snap).API and ABI breaking changes
Affects the SDK/codegen API, which is internal and unstable, but we don't break at point releases. As such, this will need a minor version bump.
Expected complexity level and risk
Testing