-
Notifications
You must be signed in to change notification settings - Fork 108
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add the update
ABI
#2137
Add the update
ABI
#2137
Conversation
12fd370
to
059463f
Compare
6770f62
to
bc2a869
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am approving the addition of the update_mut_tx
function to crates/core/src/db/datastore/traits.rs
bc2a869
to
f388240
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, and I really appreciate the tests. Just a few minor questions, then I'll be happy to approve.
f388240
to
a1aeb6c
Compare
The SDK Tests failures should be addressed once clockworklabs/com.clockworklabs.spacetimedbsdk#223 merges. |
## Description of Changes Remove the `-hotfix*` part of the version in our trunk branch. It was a (my) mistake to merge a `-hotfix*` version change. Hotfixes are, by definition, cherry-picked changes that are going to be released directly to users without merging. The consequence of merging this change was that the `SDK Tests` CI job started failing on SpacetimeDB PRs (e.g. see failures on clockworklabs/SpacetimeDB#2137), because it checks out this repo, which then tried to use the `-hotifx3` version of SpacetimeDB. But the `master` branch of SpacetimeDB is at `1.0.0-rc3` (no hotfix), because the hotfix was correctly released from a branch without merging in that repo. Although this PR reverts the version change, we do still have a tag `v1.0.0-rc3-hotfix3` that we can use to release the hotfix version (by `git push -f origin v1.0.0-rc3-hotfix3:master`) if/when desired. ## API - [ ] This is an API breaking change to the SDK No ## Requires SpacetimeDB PRs Should work with `master`. ## Testsuite *If you would like to run the your SDK changes in this PR against a specific SpacetimeDB branch, specify that here. This can be a branch name or a link to a PR.* SpacetimeDB branch name: master ## Testing I claim that the CI tests passing with `master` show that this is correct. The original version change itself passed CI because it was pointing at a non-`master` branch for testing. I claim it would have failed if it were tested against SpacetimeDB `master`. Generally, this might point to a bug in how we've done this CI: We should probably only allow a PR to merge in this repo if it tests successfully against SpacetimeDB `master`, even if we want to point it at other branches to test in the meantime. Co-authored-by: Zeke Foppa <[email protected]>
Description of Changes
Fixes #2015.
Performance wise, this PR builds upon #2092, where the perf numbers were:
Perf numbers on this PR:
API and ABI breaking changes
This is additive in term of the syscall ABIs and in terms of the module bindings APIs, there isn't really any change.
Expected complexity level and risk
5, the datastore logic is rather complicated and critical.
However, there are a lot of tests now.
Testing
Lots of new tests are added named
fn test_update_*
that try to cover the complicated logic and to achieve near full path coverage.Unlike other parts of our datastore with bugs in terms of
create_index
transactionality (e.g.,btree_scan
anditer_by_col_eq
), this PR tries to be correct, which unfortunately makes the code all the less elegant.Reviewer notes
I highly recommend hiding whitespace changes when reviewing.