hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amit Patel <amit.pa...@cloudera.com>
Subject Plan for Hybrid Logical Clocks
Date Fri, 23 Jun 2017 00:34:21 GMT
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
and a prior document by Enis Soztutar with discussion can be found here
I think the effort is at a point where it makes sense to create a public

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
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.


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message