From 6e96c7139623b503812122321ee84f54a45424b8 Mon Sep 17 00:00:00 2001 From: Szabolcs Bukros Date: Thu, 26 May 2022 10:21:25 +0200 Subject: [PATCH 1/2] HBASE-27017: MOB snapshot is broken when FileBased SFT is used force the use of default SFT when snapshotting mob regions --- .../hadoop/hbase/snapshot/SnapshotManifest.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java index e19be3f554b8..2fe2c174d719 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java @@ -36,6 +36,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.RegionInfo; import org.apache.hadoop.hbase.client.TableDescriptor; import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare; @@ -310,7 +311,17 @@ protected void addRegion(Path tableDir, RegionInfo regionInfo, RegionVisitor vis for (ColumnFamilyDescriptor cfd : htd.getColumnFamilies()) { Object familyData = visitor.familyOpen(regionData, cfd.getName()); monitor.rethrowException(); - StoreFileTracker tracker = StoreFileTrackerFactory.create(conf, htd, cfd, regionFs); + StoreFileTracker tracker = null; + if(isMobRegion){ + //MOB regions are always using the default SFT implementation + ColumnFamilyDescriptor defaultSFTCfd = ColumnFamilyDescriptorBuilder.newBuilder(cfd) + .setValue(StoreFileTrackerFactory.TRACKER_IMPL, + StoreFileTrackerFactory.Trackers.DEFAULT.name()).build(); + tracker = StoreFileTrackerFactory.create(conf, htd, defaultSFTCfd, regionFs); + } + else { + tracker = StoreFileTrackerFactory.create(conf, htd, cfd, regionFs); + } List storeFiles = tracker.load(); if (storeFiles.isEmpty()) { LOG.debug("No files under family: {}", cfd.getNameAsString()); From 45050adfa56b9a42ee8b981d71e7fee5c24b205e Mon Sep 17 00:00:00 2001 From: Szabolcs Bukros Date: Thu, 26 May 2022 15:06:53 +0200 Subject: [PATCH 2/2] HBASE-27017: MOB snapshot is broken when FileBased SFT is used spotless fix --- .../apache/hadoop/hbase/snapshot/SnapshotManifest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java index 2fe2c174d719..e578b9f9764e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifest.java @@ -312,14 +312,14 @@ protected void addRegion(Path tableDir, RegionInfo regionInfo, RegionVisitor vis Object familyData = visitor.familyOpen(regionData, cfd.getName()); monitor.rethrowException(); StoreFileTracker tracker = null; - if(isMobRegion){ - //MOB regions are always using the default SFT implementation + if (isMobRegion) { + // MOB regions are always using the default SFT implementation ColumnFamilyDescriptor defaultSFTCfd = ColumnFamilyDescriptorBuilder.newBuilder(cfd) .setValue(StoreFileTrackerFactory.TRACKER_IMPL, - StoreFileTrackerFactory.Trackers.DEFAULT.name()).build(); + StoreFileTrackerFactory.Trackers.DEFAULT.name()) + .build(); tracker = StoreFileTrackerFactory.create(conf, htd, defaultSFTCfd, regionFs); - } - else { + } else { tracker = StoreFileTrackerFactory.create(conf, htd, cfd, regionFs); } List storeFiles = tracker.load();