-
Couldn't load subscription status.
- Fork 3.4k
HBASE-25913 Introduce EnvironmentEdge.Clock and Clock.currentTimeAdvancing #3352
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
base: master
Are you sure you want to change the base?
Conversation
|
🎊 +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. |
|
Many relevant test results, found some good issues, will push an update soon. |
|
Latest push fixes tests but I'm considering another approach as well. |
|
💔 -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. |
|
💔 -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. |
2 similar comments
|
💔 -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. |
|
💔 -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. |
|
💔 -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. |
…ncing - Introduce a Clock abstraction into EnvironmentEdge and define Clock#currentTimeAdvancing, which ensures that every call to this method returns an advancing time.
…ncing - Use a per region Clock in HRegion to ensure the time advances - Update unit tests as needed
|
💔 -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 similar comment
|
💔 -1 overall
This message was automatically generated. |
Introduce a Clock abstraction into EnvironmentEdge and define Clock#currentTimeAdvancing, which ensures that every call to this method returns an advancing time.
Use a per region Clock in HRegion to ensure the time advances.
The essential changes are in three files, BoundedIncrementYieldAdvancingClock, BaseEnvironmentEdge, and HRegion.
I explored various options for implementing an advancing time, please refer to the microbenchmark results here and here. They are all included in this patch although only BoundedIncrementYieldAdvancingClock is used.
TODO:
One reasonable HRegion based test that ensures the timestamp substitutions made in a tight loop that would do more than one in a clock tick are all unique.
We optimize for single row updates. However for updates where more than one row is involved we go immediately to the region scope. We could imagine taking the above idea further and make this formal as a row clock, and keep track of row clocks similar to row locks (maybe they could be combined), and take some kind of union-of-row-clocks for all rows involved in a batch mutation, but this would seem to be fairly complex, and we need the initial changes to be reasonable reviewable, but could be considered as follow up work.