HBASE-26450 Server configuration will overwrite HStore configuration after using shell command 'update_config' (#3843)
Signed-off-by: Duo Zhang <zhangduo@apache.org> Signed-off-by: Baiqiang Zhao <zhaobaiqiang@apache.org>
This commit is contained in:
parent
058d3a45b4
commit
539e161e74
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2141,6 +2141,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);
|
||||
|
|
Loading…
Reference in New Issue