You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by hu...@apache.org on 2021/11/12 03:52:16 UTC

[hbase] branch branch-2 updated: HBASE-26450 Server configuration will overwrite HStore configuration after using shell command 'update_config' (#3843)

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

huangzhuoyue pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new ad36941  HBASE-26450 Server configuration will overwrite HStore configuration after using shell command 'update_config' (#3843)
ad36941 is described below

commit ad369419323c91c9748a31209a9cef5a360647a8
Author: Zhuoyue Huang <hu...@apache.org>
AuthorDate: Fri Nov 12 11:38:31 2021 +0800

    HBASE-26450 Server configuration will overwrite HStore configuration after using shell command 'update_config' (#3843)
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
    Signed-off-by: Baiqiang Zhao <zh...@apache.org>
---
 .../apache/hadoop/hbase/regionserver/HStore.java   |  9 ++++-----
 .../hadoop/hbase/regionserver/TestHStore.java      | 23 ++++++++++++++++++++++
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
index bd06300..7aa55e0 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
@@ -59,7 +59,6 @@ import org.apache.hadoop.fs.permission.FsAction;
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.CellComparator;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.CompoundConfiguration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.MemoryCompactionPolicy;
 import org.apache.hadoop.hbase.TableName;
@@ -67,7 +66,6 @@ import org.apache.hadoop.hbase.backup.FailedArchiveException;
 import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.client.TableDescriptor;
 import org.apache.hadoop.hbase.conf.ConfigurationManager;
 import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;
 import org.apache.hadoop.hbase.coprocessor.ReadOnlyConfiguration;
@@ -2522,10 +2520,11 @@ public class HStore implements Store, HeapSize, StoreConfigInformation,
 
   @Override
   public void onConfigurationChange(Configuration conf) {
-    this.conf = StoreUtils.createStoreConfiguration(conf, region.getTableDescriptor(),
+    Configuration storeConf = StoreUtils.createStoreConfiguration(conf, region.getTableDescriptor(),
       getColumnFamilyDescriptor());
-    this.storeEngine.compactionPolicy.setConf(conf);
-    this.offPeakHours = OffPeakHours.getInstance(conf);
+    this.conf = storeConf;
+    this.storeEngine.compactionPolicy.setConf(storeConf);
+    this.offPeakHours = OffPeakHours.getInstance(storeConf);
   }
 
   /**
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java
index 3a0adb1..82e1528 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java
@@ -2155,6 +2155,29 @@ public class TestHStore {
     }
   }
 
+  @Test 
+  public void testOnConfigurationChange() throws IOException {
+    final int COMMON_MAX_FILES_TO_COMPACT = 10;
+    final int NEW_COMMON_MAX_FILES_TO_COMPACT = 8;
+    final int STORE_MAX_FILES_TO_COMPACT = 6;
+
+    //Build a table that its maxFileToCompact different from common configuration.
+    Configuration conf = HBaseConfiguration.create();
+    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MAX_KEY,
+      COMMON_MAX_FILES_TO_COMPACT);
+    ColumnFamilyDescriptor hcd = ColumnFamilyDescriptorBuilder.newBuilder(family)
+      .setConfiguration(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MAX_KEY,
+        String.valueOf(STORE_MAX_FILES_TO_COMPACT)).build();
+    init(this.name.getMethodName(), conf, hcd);
+
+    //After updating common configuration, the conf in HStore itself must not be changed.
+    conf.setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MAX_KEY,
+      NEW_COMMON_MAX_FILES_TO_COMPACT);
+    this.store.onConfigurationChange(conf);
+    assertEquals(STORE_MAX_FILES_TO_COMPACT,
+      store.getStoreEngine().getCompactionPolicy().getConf().getMaxFilesToCompact());
+  }
+
   private HStoreFile mockStoreFileWithLength(long length) {
     HStoreFile sf = mock(HStoreFile.class);
     StoreFileReader sfr = mock(StoreFileReader.class);