-
Notifications
You must be signed in to change notification settings - Fork 414
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
fix: allow more than 15 concurrent transactions to have been committed #3067
Conversation
ACTION NEEDED delta-rs follows the Conventional Commits specification for release automation. The PR title and description are used as the merge commit message. Please update your PR title and description to match the specification. |
a number of our transitive dependencies have forced the upgrade in patch versions of the Minimum Supported Rust Version (MSRV) and broke builds from crates.io and `main` on Rust 1.80. 😒 This change upgrades us to 1.81 but bumps to 0.23 in the process. Signed-off-by: R. Tyler Croy <[email protected]>
…r use This will help retry logic associated with the logstore to directly find the appropriate next c ommit Related to #3306 Signed-off-by: R. Tyler Croy <[email protected]>
There are high-concurrency scenarios where multiple writers may have committed versions to the log since the current process' state was loaded. Because of the `snapshot.version() + 1` and retry logic in the transaction commit operation, this would result in failures if more than 15 versions had been committed since the table state had been loaded. This approach fetches the latest known version on the table prior to committing the transaction, and if the latest version has shifted, it will perform a conflict check with the versions that have since been committed. Fixes delta-io#3066 Signed-off-by: R. Tyler Croy <[email protected]> Sponsored-by: Scribd Inc
28fc839
to
8e308e2
Compare
Note: This pull request is rebased on #3069 so that the CI would pass. I would expect the other pull request to be merged first |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3067 +/- ##
========================================
Coverage 72.41% 72.41%
========================================
Files 128 128
Lines 41314 41007 -307
Branches 41314 41007 -307
========================================
- Hits 29918 29696 -222
- Misses 9426 9429 +3
+ Partials 1970 1882 -88 ☔ View full report in Codecov by Sentry. |
Looks good! Just a question, the issue also mentions to also introduce exponential backoff. But I don't see that being implemented here, are you addressing that in another PR? |
There are high-concurrency scenarios where multiple writers may have committed versions to the log since the current process' state was loaded. Because of the
snapshot.version() + 1
and retry logic in the transaction commit operation, this would result in failures if more than 15 versions had been committed since the table state had been loaded.This approach fetches the latest known version on the table prior to committing the transaction, and if the latest version has shifted, it will perform a conflict check with the versions that have since been committed.
Fixes #3066