-
Notifications
You must be signed in to change notification settings - Fork 564
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(compactor): fix put key miss tombstone #14233
Conversation
Signed-off-by: Little-Wallace <bupt2013211450@gmail.com>
Shall we cherry-pick it to v1.5? |
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.
LGTM, please add some comments for this case
self.executor.run(&mut iter, target_key).await?; | ||
} else { | ||
let is_new_user_key = !self.executor.last_key.user_key.eq(&smallest_key.user_key); | ||
if !self.executor.builder.need_flush() && is_new_user_key { |
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.
Could you please add some comments here? It's kind of confusing.
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.
Done. I have add comment for it.
Signed-off-by: Little-Wallace <bupt2013211450@gmail.com>
I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
In fast compact, if the last key is added to sstable one by one, we must check the start key of next block before we copy it into new sstable. Because if the last key is a tombstone and we have removed it, all keys of next block must check whether they share the same user key with the last key.
This bug may be one of the reasons which cause stream inconsistant: #14031
Because if one tombstone is deleted but we keep the put key following it, streaming state may find a deleted key in query result.
Checklist
./risedev check
(or alias,./risedev c
)Documentation
Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.