-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
HBASE-27649 WALPlayer does not properly dedupe overridden cell versions #5047
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
8426f4d
to
45091db
Compare
🎊 +1 overall
This message was automatically generated. |
💔 -1 overall
This message was automatically generated. |
💔 -1 overall
This message was automatically generated. |
🎊 +1 overall
This message was automatically generated. |
🎊 +1 overall
This message was automatically generated. |
🎊 +1 overall
This message was automatically generated. |
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.
Just some minor nits. Overall LGTM.
final byte[] row = Bytes.toBytes("row"); | ||
Table table = TEST_UTIL.createTable(tableName, family); | ||
|
||
long now = System.currentTimeMillis(); |
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.
Use EnvironmentEdgeManager.currentTime if possible
table = TEST_UTIL.truncateTable(tableName); | ||
g = new Get(row); | ||
result = table.get(g); | ||
assertTrue("expected row to be empty after truncate but got " + result, result.isEmpty()); |
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.
Use assertThat and Matchers.empty?
🎊 +1 overall
This message was automatically generated. |
💔 -1 overall
This message was automatically generated. |
🎊 +1 overall
This message was automatically generated. |
checkstyle/spotbugs are in hbase-backups module, which i haven't changed here. Will be handling that in a separate issue. Otherwise pre-commit passing so going to merge. Thanks! |
Ugh, somehow some temp code got in here in hbase-backup. Going to revert |
This seems simple enough from a compatibility perspective. I'm adding a new
io.serializations
, but it should not matter for HFileOutputFormat2 whose output is actually written by StoreFileWriter. It'll only be used in the intermediate output, so is safe to change between deploys.I chose to create a new ExtendedCellSerialization because it seemed the cleanest way to encapsulate, since others may have used CellSerialization in other contexts. The alternative would be to make CellSerialization implement Configurable, and use that to inject some new configuration which defaults to false. It felt better to skip needing to add a new configuration.
EDIT: I decided to wrap this in a conditional so its exposed to WALPlayer only for now. I realized that someone could have a job which reads Cells from some other sequence file they had created. A job configured by HFileOutputFormat2 would fail to read those if ExtendedCellSerialization were added. So adding to just WALPlayer preserves compatibility, since that job is end-to-end.