Skip to content

HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration#8144

Open
jinhyukify wants to merge 4 commits intoapache:masterfrom
jinhyukify:HBASE-30117
Open

HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration#8144
jinhyukify wants to merge 4 commits intoapache:masterfrom
jinhyukify:HBASE-30117

Conversation

@jinhyukify
Copy link
Copy Markdown
Contributor

@junegunn
Copy link
Copy Markdown
Member

junegunn commented May 1, 2026

It seems no one has a clear answer, but I got the impression that "configuration" was being phased out in favor of "value". So previously in #6986, I updated the checker to check both maps, instead of reverting what we already changed in HBASE-20819. Can we do the same here, instead of reviving the use of the configuration map?

jinhyukify added 2 commits May 4, 2026 16:59
…sing setValue instead of setConfiguration"

This reverts commit 16aaa48.
@jinhyukify
Copy link
Copy Markdown
Contributor Author

@junegunn Thank you for your review.
Good point. agree with keeping the HBASE-20819 and HBASE-29314 direction. I've reverted the admin.rb change and instead extended the same CompoundConfiguration pattern to the two CF-level validators that were still reading only from cfd.getConfiguration():

  • TableDescriptorChecker#checkBloomFilterType
  • TableDescriptorChecker#checkDateTieredCompactionForTimeRangeDataTiering

Comment on lines +236 to +237
Configuration cfdConf = new CompoundConfiguration().add(conf)
.addStringMap(cfd.getConfiguration()).addBytesMap(cfd.getValues());
Copy link
Copy Markdown
Contributor Author

@jinhyukify jinhyukify May 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will fix this bug:

Before

# This should fail but succeed
create 'mytable2', {NAME => 'f', CONFIGURATION => {'hbase.hstore.datatiering.type'  => 'TIME_RANGE', 'hbase.hstore.engine.class' => 'org.apache.hadoop.hbase.regionserver.DefaultStoreEngine'}}

After

# This fails
create 'mytable2', {NAME => 'f', CONFIGURATION => {'hbase.hstore.datatiering.type'  => 'TIME_RANGE', 'hbase.hstore.engine.class' => 'org.apache.hadoop.hbase.regionserver.DefaultStoreEngine'}}

ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: Time Range Data Tiering should be enabled with Date Tiered Compaction. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:365)
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:382)
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.checkDateTieredCompactionForTimeRangeDataTiering(TableDescriptorChecker.java:247)
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.checkDateTieredCompactionForTimeRangeDataTiering(TableDescriptorChecker.java:238)
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:210)
        at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2494)
        at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:792)
        at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:461)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
        at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102)
        at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82)
Caused by: java.lang.IllegalArgumentException: Time Range Data Tiering should be enabled with Date Tiered Compaction.
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.lambda$checkDateTieredCompactionForTimeRangeDataTiering$4(TableDescriptorChecker.java:253)
        at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:380)
        ... 10 more

@junegunn junegunn assigned junegunn and jinhyukify and unassigned junegunn May 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants