From 237d954b32cd62bc385da6b1d7a83d24f5dddb18 Mon Sep 17 00:00:00 2001 From: Bryan Beaudreault Date: Thu, 3 Mar 2022 12:16:57 -0500 Subject: [PATCH 1/2] HBASE-26797 HBase 1.x clients will choke on rep_barrier rows when scanning hbase 2.x meta --- .../java/org/apache/hadoop/hbase/client/ConnectionManager.java | 1 + .../main/java/org/apache/hadoop/hbase/client/MetaScanner.java | 1 + 2 files changed, 2 insertions(+) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java index dcd9d5319f08..36ae40b5a7c4 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java @@ -1286,6 +1286,7 @@ private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, Scan s = new Scan(); s.setReversed(true); s.withStartRow(metaKey); + s.addFamily(HConstants.CATALOG_FAMILY); if (this.useMetaReplicas) { s.setConsistency(Consistency.TIMELINE); diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java index 8bc06548b4d9..947b7c5361b6 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java @@ -220,6 +220,7 @@ private static Result getClosestRowOrBefore(final Table metaTable, final TableNa throws IOException { byte[] searchRow = HRegionInfo.createRegionName(userTableName, row, HConstants.NINES, false); Scan scan = Scan.createGetClosestRowOrBeforeReverseScan(searchRow); + scan.addFamily(HConstants.CATALOG_FAMILY); if (useMetaReplicas) { scan.setConsistency(Consistency.TIMELINE); } From 870b815f91eb030fb6e41bda70488d2931a7b47d Mon Sep 17 00:00:00 2001 From: Bryan Beaudreault Date: Thu, 3 Mar 2022 21:33:13 -0500 Subject: [PATCH 2/2] Add comment --- .../org/apache/hadoop/hbase/client/ConnectionManager.java | 4 ++++ .../main/java/org/apache/hadoop/hbase/client/MetaScanner.java | 3 +++ 2 files changed, 7 insertions(+) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java index 36ae40b5a7c4..6cd2ac212fb5 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java @@ -1286,6 +1286,10 @@ private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, Scan s = new Scan(); s.setReversed(true); s.withStartRow(metaKey); + + // Adding a filter on CATALOG_FAMILY is necessary for compatibility + // with hbase 2.x and beyond, which adds additional column families. + // See HBASE-26797 s.addFamily(HConstants.CATALOG_FAMILY); if (this.useMetaReplicas) { diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java index 947b7c5361b6..d493546a3081 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java @@ -220,6 +220,9 @@ private static Result getClosestRowOrBefore(final Table metaTable, final TableNa throws IOException { byte[] searchRow = HRegionInfo.createRegionName(userTableName, row, HConstants.NINES, false); Scan scan = Scan.createGetClosestRowOrBeforeReverseScan(searchRow); + // Adding a filter on CATALOG_FAMILY is necessary for compatibility + // with hbase 2.x and beyond, which adds additional column families. + // See HBASE-26797 scan.addFamily(HConstants.CATALOG_FAMILY); if (useMetaReplicas) { scan.setConsistency(Consistency.TIMELINE);