-
Notifications
You must be signed in to change notification settings - Fork 25
Postgres Compact Fix #217
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
Merged
Merged
Postgres Compact Fix #217
Conversation
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
🦋 Changeset detectedLatest commit: 801ea77 The changes in this PR will be included in the next version bump. This PR includes changesets to release 9 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
rkistner
reviewed
Feb 26, 2025
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.
Happy with the fix
packages/service-core-tests/src/tests/register-compacting-tests.ts
Outdated
Show resolved
Hide resolved
packages/service-core-tests/src/tests/register-compacting-tests.ts
Outdated
Show resolved
Hide resolved
rkistner
approved these changes
Feb 26, 2025
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.
Overview
A bug was recently identified in the Postgres compacting logic. Compacting can fail due to an "unexpected PUT operation" error.
The Postgres compacting operations logic contained an error in the bucket operation processing logic.
The current Postgres windowing logic functions as follows:
op_id.Suppose the scenario:
bucket1andbucket2, each with 8k ops.bucket1is ops [1:8_000],bucket2is ops[8_001:16_000]`.bucket1, and 2k ops[14_001:16_000]frombucket2.op_id < 14_001. It gets the 8k ops frombucket1again. But since it was busy withbucket2, and now gets data forbucket1, it thinksbucket2is done. The compactor doesclearBucket('bucket2', 14123),even though there are more PUT operations inbucket2.The updated Postgres compactor is now better aligned with the MongoDB implementation. The bucket data operations are sorted in descending order of
bucket_nameandop_id. The last operation of the batch is now correctly used as an upper limit when querying the next batches.A unit test has been added to ensure correct compaction in the scenario above.
The compacting tests were also improved to use varying compacting options.