Skip to content

Commit 6158621

Browse files
author
Prathyusha Garre
committed
Fix regionDir in clone snapshots wfw to clone all mob files rightly to mobdir
1 parent 1e06bcc commit 6158621

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
2525
import org.apache.hadoop.hbase.client.TableDescriptor;
2626
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
27+
import org.apache.hadoop.hbase.mob.MobUtils;
2728
import org.apache.hadoop.hbase.procedure2.util.StringUtils;
2829
import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
2930
import org.apache.hadoop.hbase.regionserver.StoreContext;
@@ -118,7 +119,15 @@ public static Class<? extends StoreFileTracker> getTrackerClass(String trackerNa
118119

119120
public static StoreFileTracker create(Configuration conf, boolean isPrimaryReplica,
120121
StoreContext ctx) {
121-
Class<? extends StoreFileTracker> tracker = getTrackerClass(conf);
122+
Class<? extends StoreFileTracker> tracker;
123+
if (
124+
ctx != null && ctx.getRegionInfo().getEncodedName()
125+
.equals(MobUtils.getMobRegionInfo(ctx.getTableName()).getEncodedName())
126+
) {
127+
tracker = Trackers.DEFAULT.clazz;
128+
} else {
129+
tracker = getTrackerClass(conf);
130+
}
122131
LOG.debug("instantiating StoreFileTracker impl {}", tracker.getName());
123132
return ReflectionUtils.newInstance(tracker, conf, isPrimaryReplica, ctx);
124133
}
@@ -186,7 +195,7 @@ public static TableDescriptor updateWithTrackerConfigs(Configuration conf,
186195
// descriptors with the SFT impl specific configs. By the time this happens, the table has no
187196
// regions nor stores yet, so it can't create a proper StoreContext.
188197
if (StringUtils.isEmpty(descriptor.getValue(TRACKER_IMPL))) {
189-
StoreFileTracker tracker = StoreFileTrackerFactory.create(conf, true, null);
198+
StoreFileTracker tracker = create(conf, true, null);
190199
TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(descriptor);
191200
return tracker.updateWithTrackerConfigs(builder).build();
192201
}

hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,8 +661,7 @@ private void cloneRegion(final RegionInfo newRegionInfo, final Path regionDir,
661661
for (SnapshotRegionManifest.FamilyFiles familyFiles : manifest.getFamilyFilesList()) {
662662
Path familyDir = new Path(regionDir, familyFiles.getFamilyName().toStringUtf8());
663663
List<StoreFileInfo> clonedFiles = new ArrayList<>();
664-
Path regionPath = new Path(tableDir, newRegionInfo.getEncodedName());
665-
HRegionFileSystem regionFS = (fs.exists(regionPath))
664+
HRegionFileSystem regionFS = (fs.exists(regionDir))
666665
? HRegionFileSystem.openRegionFromFileSystem(conf, fs, tableDir, newRegionInfo, false)
667666
: HRegionFileSystem.createRegionOnFileSystem(conf, fs, tableDir, newRegionInfo);
668667

0 commit comments

Comments
 (0)