[hbase] 07/16: HBASE-26264 Add more checks to prevent misconfiguration on store file tracker (#3681)

2021-12-22 Thread elserj
This is an automated email from the ASF dual-hosted git repository.

elserj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 5ff0f98a5367326753bc0e06d8726b66d109238c
Author: Duo Zhang 
AuthorDate: Wed Sep 15 23:00:03 2021 +0800

HBASE-26264 Add more checks to prevent misconfiguration on store file 
tracker (#3681)

Signed-off-by: Josh Elser 
---
 .../assignment/MergeTableRegionsProcedure.java |   3 +-
 .../assignment/SplitTableRegionProcedure.java  |   3 +-
 .../master/procedure/CreateTableProcedure.java |   8 +-
 .../master/procedure/ModifyTableProcedure.java |   5 +
 .../hbase/regionserver/HRegionFileSystem.java  |   2 +-
 .../MigrationStoreFileTracker.java |   8 +
 .../storefiletracker/StoreFileTrackerFactory.java  | 173 +--
 .../TestChangeStoreFileTracker.java| 242 +
 8 files changed, 422 insertions(+), 22 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index e6bbe44..e9051da 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -614,8 +614,7 @@ public class MergeTableRegionsProcedure
   String family = hcd.getNameAsString();
   Configuration trackerConfig =
 
StoreFileTrackerFactory.mergeConfigurations(env.getMasterConfiguration(), htd, 
hcd);
-  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
-family, regionFs);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
family, regionFs);
   final Collection storeFiles = tracker.load();
   if (storeFiles != null && storeFiles.size() > 0) {
 final Configuration storeConfiguration =
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
index ff16dc5..aa0c938 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
@@ -670,8 +670,7 @@ public class SplitTableRegionProcedure
   String family = cfd.getNameAsString();
   Configuration trackerConfig = StoreFileTrackerFactory.
 mergeConfigurations(env.getMasterConfiguration(), htd, 
htd.getColumnFamily(cfd.getName()));
-  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
-family, regionFs);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
family, regionFs);
   Collection sfis = tracker.load();
   if (sfis == null) {
 continue;
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
index dccea55..ee8e51f 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
@@ -277,15 +277,17 @@ public class CreateTableProcedure
   MasterProcedureUtil.checkGroupNotEmpty(rsGroupInfo, forWhom);
 }
 
+// check for store file tracker configurations
+StoreFileTrackerFactory.checkForCreateTable(env.getMasterConfiguration(), 
tableDescriptor);
+
 return true;
   }
 
   private void preCreate(final MasterProcedureEnv env)
   throws IOException, InterruptedException {
 if (!getTableName().isSystemTable()) {
-  ProcedureSyncWait.getMasterQuotaManager(env)
-.checkNamespaceTableAndRegionQuota(
-  getTableName(), (newRegions != null ? newRegions.size() : 0));
+  
ProcedureSyncWait.getMasterQuotaManager(env).checkNamespaceTableAndRegionQuota(getTableName(),
+(newRegions != null ? newRegions.size() : 0));
 }
 
 TableDescriptorBuilder builder = 
TableDescriptorBuilder.newBuilder(tableDescriptor);
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
index 247dd9c..1640644 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
@@ -38,6 +38,7 @@ import org.apache.hadoop.hbase.client.TableDescriptor;
 import 

[hbase] 07/16: HBASE-26264 Add more checks to prevent misconfiguration on store file tracker (#3681)

2021-12-17 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

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

commit 16d055140d77e63c39dfe79b94fe708208bce392
Author: Duo Zhang 
AuthorDate: Wed Sep 15 23:00:03 2021 +0800

HBASE-26264 Add more checks to prevent misconfiguration on store file 
tracker (#3681)

Signed-off-by: Josh Elser 
---
 .../assignment/MergeTableRegionsProcedure.java |   3 +-
 .../assignment/SplitTableRegionProcedure.java  |   3 +-
 .../master/procedure/CreateTableProcedure.java |   8 +-
 .../master/procedure/ModifyTableProcedure.java |   5 +
 .../hbase/regionserver/HRegionFileSystem.java  |   2 +-
 .../MigrationStoreFileTracker.java |   8 +
 .../storefiletracker/StoreFileTrackerFactory.java  | 173 +--
 .../TestChangeStoreFileTracker.java| 242 +
 8 files changed, 422 insertions(+), 22 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index e6bbe44..e9051da 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -614,8 +614,7 @@ public class MergeTableRegionsProcedure
   String family = hcd.getNameAsString();
   Configuration trackerConfig =
 
StoreFileTrackerFactory.mergeConfigurations(env.getMasterConfiguration(), htd, 
hcd);
-  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
-family, regionFs);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
family, regionFs);
   final Collection storeFiles = tracker.load();
   if (storeFiles != null && storeFiles.size() > 0) {
 final Configuration storeConfiguration =
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
index ff16dc5..aa0c938 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
@@ -670,8 +670,7 @@ public class SplitTableRegionProcedure
   String family = cfd.getNameAsString();
   Configuration trackerConfig = StoreFileTrackerFactory.
 mergeConfigurations(env.getMasterConfiguration(), htd, 
htd.getColumnFamily(cfd.getName()));
-  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
-family, regionFs);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
family, regionFs);
   Collection sfis = tracker.load();
   if (sfis == null) {
 continue;
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
index dccea55..ee8e51f 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
@@ -277,15 +277,17 @@ public class CreateTableProcedure
   MasterProcedureUtil.checkGroupNotEmpty(rsGroupInfo, forWhom);
 }
 
+// check for store file tracker configurations
+StoreFileTrackerFactory.checkForCreateTable(env.getMasterConfiguration(), 
tableDescriptor);
+
 return true;
   }
 
   private void preCreate(final MasterProcedureEnv env)
   throws IOException, InterruptedException {
 if (!getTableName().isSystemTable()) {
-  ProcedureSyncWait.getMasterQuotaManager(env)
-.checkNamespaceTableAndRegionQuota(
-  getTableName(), (newRegions != null ? newRegions.size() : 0));
+  
ProcedureSyncWait.getMasterQuotaManager(env).checkNamespaceTableAndRegionQuota(getTableName(),
+(newRegions != null ? newRegions.size() : 0));
 }
 
 TableDescriptorBuilder builder = 
TableDescriptorBuilder.newBuilder(tableDescriptor);
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
index 247dd9c..1640644 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
@@ -38,6 +38,7 @@ import org.apache.hadoop.hbase.client.TableDescriptor;
 import