This is an automated email from the ASF dual-hosted git repository.

andor pushed a commit to branch HBASE-29081
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/HBASE-29081 by this push:
     new 50d4636f20c HBASE-29594: Add suffix to Master Region data directory 
(#7330)
50d4636f20c is described below

commit 50d4636f20cb9c93a26b02cb9d6e1efd6b2213e9
Author: Kota-SH <[email protected]>
AuthorDate: Mon Oct 20 10:37:49 2025 -0400

    HBASE-29594: Add suffix to Master Region data directory (#7330)
---
 .../hbase/master/region/MasterRegionFactory.java   | 28 ++++++++++++++++++++--
 .../store/region/HFileProcedurePrettyPrinter.java  |  2 +-
 .../master/region/TestMasterRegionInitialize.java  | 18 ++++++++++++++
 .../region/TestHFileProcedurePrettyPrinter.java    |  2 +-
 .../region/TestWALProcedurePrettyPrinter.java      |  2 +-
 5 files changed, 47 insertions(+), 5 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionFactory.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionFactory.java
index 71fb76bd0f1..3a0d33dc143 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionFactory.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionFactory.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.master.region;
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.Server;
 import org.apache.hadoop.hbase.TableName;
@@ -34,6 +35,8 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.ReflectionUtils;
 import org.apache.yetus.audience.InterfaceAudience;
 
+import org.apache.hbase.thirdparty.com.google.common.base.Strings;
+
 /**
  * The factory class for creating a {@link MasterRegion}.
  */
@@ -54,7 +57,24 @@ public final class MasterRegionFactory {
 
   public static final String USE_HSYNC_KEY = 
"hbase.master.store.region.wal.hsync";
 
-  public static final String MASTER_STORE_DIR = "MasterData";
+  // Default master data dir
+  private static final String MASTER_REGION_DIR_NAME_DEFAULT = "MasterData";
+
+  private static final String MASTER_REGION_DIR_NAME;
+  static {
+    Configuration conf = HBaseConfiguration.create();
+    MASTER_REGION_DIR_NAME = initMasterRegionDirName(conf);
+  }
+
+  public static String initMasterRegionDirName(Configuration conf) {
+    String suffix = conf.get(HConstants.HBASE_META_TABLE_SUFFIX,
+      HConstants.HBASE_META_TABLE_SUFFIX_DEFAULT_VALUE);
+    if (Strings.isNullOrEmpty(suffix)) {
+      return MASTER_REGION_DIR_NAME_DEFAULT;
+    } else {
+      return MASTER_REGION_DIR_NAME_DEFAULT + "_" + suffix;
+    }
+  }
 
   private static final String FLUSH_SIZE_KEY = 
"hbase.master.store.region.flush.size";
 
@@ -116,7 +136,7 @@ public final class MasterRegionFactory {
   public static MasterRegion create(Server server) throws IOException {
     Configuration conf = server.getConfiguration();
     MasterRegionParams params = new MasterRegionParams().server(server)
-      
.regionDirName(MASTER_STORE_DIR).tableDescriptor(withTrackerConfigs(conf));
+      
.regionDirName(getMasterRegionDirName()).tableDescriptor(withTrackerConfigs(conf));
     long flushSize = conf.getLong(FLUSH_SIZE_KEY, DEFAULT_FLUSH_SIZE);
     long flushPerChanges = conf.getLong(FLUSH_PER_CHANGES_KEY, 
DEFAULT_FLUSH_PER_CHANGES);
     long flushIntervalMs = conf.getLong(FLUSH_INTERVAL_MS_KEY, 
DEFAULT_FLUSH_INTERVAL_MS);
@@ -134,4 +154,8 @@ public final class MasterRegionFactory {
       .archivedHFileSuffix(ARCHIVED_HFILE_SUFFIX);
     return MasterRegion.create(params);
   }
+
+  public static String getMasterRegionDirName() {
+    return MASTER_REGION_DIR_NAME;
+  }
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure2/store/region/HFileProcedurePrettyPrinter.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure2/store/region/HFileProcedurePrettyPrinter.java
index c254201db9b..0752c814f38 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure2/store/region/HFileProcedurePrettyPrinter.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/procedure2/store/region/HFileProcedurePrettyPrinter.java
@@ -85,7 +85,7 @@ public class HFileProcedurePrettyPrinter extends 
AbstractHBaseTool {
 
   private void addAllHFiles() throws IOException {
     Path masterProcDir =
-      new Path(CommonFSUtils.getRootDir(conf), 
MasterRegionFactory.MASTER_STORE_DIR);
+      new Path(CommonFSUtils.getRootDir(conf), 
MasterRegionFactory.getMasterRegionDirName());
     Path tableDir = CommonFSUtils.getTableDir(masterProcDir, 
MasterRegionFactory.TABLE_NAME);
     FileSystem fs = tableDir.getFileSystem(conf);
     Path regionDir =
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionInitialize.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionInitialize.java
index 8b6f4670732..20bd4ada48d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionInitialize.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionInitialize.java
@@ -24,8 +24,11 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.TableDescriptor;
@@ -114,4 +117,19 @@ public class TestMasterRegionInitialize extends 
MasterRegionTestBase {
     // but the data should have been cleaned up
     assertTrue(region.get(new Get(row)).isEmpty());
   }
+
+  @Test
+  public void testMasterRegionDirSuffix() {
+    String currentMasterRegionDirName = 
MasterRegionFactory.getMasterRegionDirName();
+    assertEquals("Default master region directory should be MasterData", 
"MasterData",
+      currentMasterRegionDirName);
+
+    Configuration confWithSuffix = HBaseConfiguration.create();
+    String suffix = "replica1";
+    confWithSuffix.set(HConstants.HBASE_META_TABLE_SUFFIX, suffix);
+    String dirNameWithSuffix = 
MasterRegionFactory.initMasterRegionDirName(confWithSuffix);
+    String expectedDirName = "MasterData_" + suffix;
+    assertEquals("Directory name should have suffix when configured", 
expectedDirName,
+      dirNameWithSuffix);
+  }
 }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestHFileProcedurePrettyPrinter.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestHFileProcedurePrettyPrinter.java
index b85897a1afa..0a99f27eb60 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestHFileProcedurePrettyPrinter.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestHFileProcedurePrettyPrinter.java
@@ -102,7 +102,7 @@ public class TestHFileProcedurePrettyPrinter extends 
RegionProcedureStoreTestBas
     store.cleanup();
     store.region.flush(true);
     Path tableDir = CommonFSUtils.getTableDir(
-      new Path(htu.getDataTestDir(), MasterRegionFactory.MASTER_STORE_DIR),
+      new Path(htu.getDataTestDir(), 
MasterRegionFactory.getMasterRegionDirName()),
       MasterRegionFactory.TABLE_NAME);
     FileSystem fs = tableDir.getFileSystem(htu.getConfiguration());
     Path regionDir =
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestWALProcedurePrettyPrinter.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestWALProcedurePrettyPrinter.java
index d942c65b8c7..2875c9f467b 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestWALProcedurePrettyPrinter.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/procedure2/store/region/TestWALProcedurePrettyPrinter.java
@@ -64,7 +64,7 @@ public class TestWALProcedurePrettyPrinter extends 
RegionProcedureStoreTestBase
     }
     store.cleanup();
     Path walParentDir = new Path(htu.getDataTestDir(),
-      MasterRegionFactory.MASTER_STORE_DIR + "/" + 
HConstants.HREGION_LOGDIR_NAME);
+      MasterRegionFactory.getMasterRegionDirName() + "/" + 
HConstants.HREGION_LOGDIR_NAME);
     FileSystem fs = walParentDir.getFileSystem(htu.getConfiguration());
     Path walDir = fs.listStatus(walParentDir)[0].getPath();
     Path walFile = fs.listStatus(walDir)[0].getPath();

Reply via email to