You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2021/11/27 08:40:02 UTC
[hbase] branch branch-2.4 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.
zhangduo pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.4 by this push:
new f86bff0 HBASE-26450 Server configuration will overwrite HStore configuration after using shell command 'update_config' (#3843)
f86bff0 is described below
commit f86bff0f53877176b16f87e17fe6fe97a2cbd583
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 | 25 ++++++++++++++++++++--
2 files changed, 27 insertions(+), 7 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 503dfea..55aa76c 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
@@ -61,7 +61,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;
@@ -69,7 +68,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;
@@ -2627,10 +2625,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 ed1206c..abbff94 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
@@ -54,7 +54,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.IntBinaryOperator;
-
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
@@ -99,7 +98,6 @@ import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
import org.apache.hadoop.hbase.quotas.RegionSizeStoreImpl;
import org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action;
-import org.apache.hadoop.hbase.regionserver.TestHStore.MyDefaultMemStore;
import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;
import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;
import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;
@@ -2281,6 +2279,29 @@ public class TestHStore {
return segmentScanners.get(0);
}
+ @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);