You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ju...@apache.org on 2026/09/08 03:39:09 UTC
(hbase) branch master updated: HBASE-30365 Skip the MOB pseudo-region when building snapshot input splits (#8626)
This is an automated email from the ASF dual-hosted git repository.
junegunn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 125ae77427f HBASE-30365 Skip the MOB pseudo-region when building snapshot input splits (#8626)
125ae77427f is described below
commit 125ae77427fb7758235beaa09de91ca6108729a7
Author: Junegunn Choi <ju...@apache.org>
AuthorDate: Tue Sep 8 12:39:02 2026 +0900
HBASE-30365 Skip the MOB pseudo-region when building snapshot input splits (#8626)
TableSnapshotInputFormatImpl.getRegionInfosFromManifest creates a split for every
region in the snapshot manifest, and a MOB snapshot manifest includes the MOB
pseudo-region from MobUtils.getMobRegionInfo. Each split is then opened as a real
region under the restore dir.
HBASE-30336 correctly stopped writing a .regioninfo for that pseudo-region under
the table dir, so opening it now fails with "Region directory does not exist".
Skip it, next to the existing offline-split filter. Behaviour preserving: the
pseudo-region's family files live under mobdir, so the split opened a region with
no store files and returned zero rows. MOB values are read through references in
the data regions, not by scanning the pseudo-region.
Covered by the existing TestCopyTable MOB snapshot tests, which fail without this
change.
Signed-off-by: Xiao Liu <li...@apache.org>
---
.../apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
index 633a9b25cdd..e44d003cf5b 100644
--- a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
+++ b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
@@ -43,6 +43,7 @@ import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Scan.ReadType;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
+import org.apache.hadoop.hbase.mob.MobUtils;
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper;
import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;
@@ -361,6 +362,11 @@ public class TableSnapshotInputFormatImpl {
if (hri.isOffline() && (hri.isSplit() || hri.isSplitParent())) {
continue;
}
+ // The mob region is a dummy region used only to organise mob files under mobdir. It has no
+ // region directory under the table dir to open, and holds no rows. See HBASE-30365.
+ if (MobUtils.isMobRegionInfo(hri)) {
+ continue;
+ }
regionInfos.add(hri);
}
return regionInfos;