Details
-
Sub-task
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
None
-
None
-
Reviewed
-
hbase-2.x sets KeyValue Comparators into the tail of hfiles rather than CellComparator, what it uses internally, just so hbase-1.x can continue to read hbase-2.x written hfiles.
Description
See tail of HBASE-19052 for discussion which concludes we should try and make it so operators do not have to go to latest hbase version before they upgrade, at least if we can avoid it.
The necessary change of our default comparator from KV to Cell naming has hfiles with tails that have the classname CellComparator in them in place of KeyValueComparator. If an hbase1 tries to open them, it will fail not having a CellComparator in its classpath (We have name of comparator in tail because different files require different comparators... perhaps we write an alias instead of a class one day... TODO). HBASE-16189 and HBASE-19052 are about trying to carry knowledge of hbase2 back to hbase1, a brittle approach making it so operators will have to upgrade to the latest branch-1 before they can go to hbase2.
This issue is about undoing our writing of an incompatible (to hbase1) tail, not unless we really have to (and it sounds like we could do without writing an incompatible tail) to see if we can avoid requiring operators go to lastest branch-1 (we may end up needing this but lets a have a really good reason for it if we do).
Oh, let this filing be an answer to our anoop.hbase's old high-level question over in HBASE-16189:
...means when rolling upgrade done to 2.0, first users have to upgrade to some 1.x versions which is having this fix and then to 2.0.. What do you guys think Whether we should avoid this kind of indirection? cc Enis Soztutar, Stack, Ted Yu, Matteo Bertozzi
Yeah, lets try to avoid this if we can...
Attachments
Attachments
Issue Links
- links to