Hi everyone,
I'm Amit and I've been picking up on the past work on Hybrid Logical Clocks (HBASE-14070 <https://issues.apache.org/jira/browse/HBASE-14070>) that was done by Sai Teja Ranuva last summer. The most recent status of HLC on HBase can be found here <https://docs.google.com/document/d/1n32DUKoL3LSoKQ1_NuF8TbQkZiZCwFhbHZ7JXRjg3oA/edit#> and a prior document by Enis Soztutar with discussion can be found here <https://docs.google.com/document/d/1LL2GAodiYi0waBz5ODGL4LDT4e_bXy8P9h6kWC05Bhw/edit#>. I think the effort is at a point where it makes sense to create a public branch. Currently the plan is to create a public branch and incrementally add on functionality and tests. Initially, core HLC would be introduced as a commit. From there, HLC would then be enabled for just the meta table (updating the clock on events like region open/close, recovery, replication, etc). Once we are fully confident that HLC at least works on the meta table then I anticipate it would be appropriate to merge with the master branch. Follow up commits would extend the effort by: - Addition of a protobuf message called NodeTime that holds timestamp corresponding to a send event between nodes. - Addition of NodeTime as a field to messages sent between nodes for messages like requests and responses for region open/close. - Addition of integration tests that verify HLC works correctly with recovery, replication, region open, and region close. - Later enabling HLC on user tables (main barrier are tests that rely on client-side setting of timestamps for table mutations which would no longer be allowed on an HLC table). Work that I have implemented under the outstanding work <https://docs.google.com/document/d/1n32DUKoL3LSoKQ1_NuF8TbQkZiZCwFhbHZ7JXRjg3oA/edit#heading=h.8x5d8iakmo8b> as a part of getting HLC working for user tables includes: - Mapping of time ranges from client GETs - Disallowing clients to set timestamps for HLC and System Monotonic tables Feel free to chime in with any comments, suggestions, or other input. -- Amit