-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Ldtdeser trunk CASSANDRA-18648 #2464
Conversation
test/microbench/org/apache/cassandra/test/microbench/DeletionTimeDeSerBench.java
Outdated
Show resolved
Hide resolved
test/microbench/org/apache/cassandra/test/microbench/DeletionTimeDeSerBench.java
Show resolved
Hide resolved
Note to self. Should add CHANGES.txt entry and notes on upgrades |
What are the situations when we need both MFDA and LDT at the same time? When the cell is live, we don't know when it will be deleted, so why store LDT? What am I missing? |
|
I don't think @pkolaczk is asking that but:
I didn't know yesterday but then I remembered gc_seconds is a configurable parameter. It can change per table and through time so it needs to be recorded somehow. If that were the case we could store ldt as a delta in seconds from mfda and lift the 2106 limit... 🤔 |
right, my comment was off |
@pkolaczk I think the question you raised is legit. But it touches on one of the corner stones of the codebase. I am not comfortable touching that so close to a release. I think the change is big enough it deserves it's own ticket. Are you ok we address that separately? |
@bereng sure, no problem. For the most common case - live cells the timestamps aren't stored at all so this is already a very good improvement. |
AFAIK both local and markedFor times are needed and serve different purposes. They should, however, be close to each other normally (i.e. local should be ~ I do not insist on this, saving the bytes for the |
@blambov thx for the suggestion. Yes a Vint to mfda, to some synthetic sstable epoch, storing gc_grace_sedonds instead etc. Are all alternatives I want to look at. But first I want to javadoc the whole OA sstable format for everyone's benefit and to see if there are more opportunities around as I don't know this code. |
I have rebased and pushed a version whose only change is that we only use the sign bit to encode LIVE DTs. That allows us to support the full Long range and imposes no restrictions on the users. We can revisit this and use the full byte when we have a justification in the future, have a better opinion on how to improve the ldt serialization, etc. Ci is green with only known flakies. |
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.
You will probably need to regenerate the legacy files after rebasing because of a new flag from CASSANDRA-18397.
test/microbench/org/apache/cassandra/test/microbench/DeletionTimeDeSerBench.java
Show resolved
Hide resolved
@jacek-lewandowski @pkolaczk this is ready for (hopefully) final review. Then I'll rebase and re-run CI. |
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.
+1
Rebased to trunk. CI with only the expected failures after the jdk8 drop. The resolution of 18676 will inform how to solve the corruption detection. |
a1d4848
to
74ce260
Compare
Added sstable corruption detection and CI is green |
568c28a
to
73e680b
Compare
Switched to IOException and all is green. Failures are the j17 known ones. |
LGTM |
Squashed before commit. |
Note on reviewers: @jakubzytka is OOO currently, knowing his only concern has been cleared, knowing him personally and after having checked with PMC I have been allowed to merge. |
Thanks for sending a pull request! Here are some tips if you're new here:
Commit messages should follow the following format:
The Cassandra Jira