You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "jinhyukify (via GitHub)" <gi...@apache.org> on 2026/04/26 14:16:38 UTC

[PR] HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration [hbase]

jinhyukify opened a new pull request, #8144:
URL: https://github.com/apache/hbase/pull/8144

   **Jira** https://issues.apache.org/jira/browse/HBASE-30117


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration [hbase]

Posted by "jinhyukify (via GitHub)" <gi...@apache.org>.
jinhyukify commented on code in PR #8144:
URL: https://github.com/apache/hbase/pull/8144#discussion_r3180699873


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/util/TableDescriptorChecker.java:
##########
@@ -233,8 +233,8 @@ private static void checkDateTieredCompactionForTimeRangeDataTiering(final Confi
     checkDateTieredCompactionForTimeRangeDataTiering(conf);
     for (ColumnFamilyDescriptor cfd : td.getColumnFamilies()) {
       // Column family level configurations
-      Configuration cfdConf =
-        new CompoundConfiguration().add(conf).addStringMap(cfd.getConfiguration());
+      Configuration cfdConf = new CompoundConfiguration().add(conf)
+        .addStringMap(cfd.getConfiguration()).addBytesMap(cfd.getValues());

Review Comment:
   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: Failed to get bloom filter param 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.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:374)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.checkBloomFilterType(TableDescriptorChecker.java:319)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:162)
           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: org.apache.hadoop.hbase.DoNotRetryIOException: Failed to get bloom filter param
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.lambda$checkBloomFilterType$6(TableDescriptorChecker.java:326)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:380)
           ... 10 more
   Caused by: java.lang.IllegalArgumentException: Bloom filter type is ROWPREFIX_FIXED_LENGTH, the value of RowPrefixBloomFilter.prefix_length must >=0 and < 32767
           at org.apache.hadoop.hbase.util.BloomFilterUtil.getBloomFilterParam(BloomFilterUtil.java:270)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.lambda$checkBloomFilterType$6(TableDescriptorChecker.java:324)
           ... 11 more
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on PR #8144:
URL: https://github.com/apache/hbase/pull/8144#issuecomment-4358963533

   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 https://github.com/apache/hbase/pull/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?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration [hbase]

Posted by "jinhyukify (via GitHub)" <gi...@apache.org>.
jinhyukify commented on code in PR #8144:
URL: https://github.com/apache/hbase/pull/8144#discussion_r3180699873


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/util/TableDescriptorChecker.java:
##########
@@ -233,8 +233,8 @@ private static void checkDateTieredCompactionForTimeRangeDataTiering(final Confi
     checkDateTieredCompactionForTimeRangeDataTiering(conf);
     for (ColumnFamilyDescriptor cfd : td.getColumnFamilies()) {
       // Column family level configurations
-      Configuration cfdConf =
-        new CompoundConfiguration().add(conf).addStringMap(cfd.getConfiguration());
+      Configuration cfdConf = new CompoundConfiguration().add(conf)
+        .addStringMap(cfd.getConfiguration()).addBytesMap(cfd.getValues());

Review Comment:
   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
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn merged PR #8144:
URL: https://github.com/apache/hbase/pull/8144


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-30117 Fix HBase shell CONFIGURATION for column family using setValue instead of setConfiguration [hbase]

Posted by "jinhyukify (via GitHub)" <gi...@apache.org>.
jinhyukify commented on PR #8144:
URL: https://github.com/apache/hbase/pull/8144#issuecomment-4370036658

   @junegunn Thank you for your review.
   Good point. agree with keeping the [HBASE-20819](https://issues.apache.org/jira/browse/HBASE-20819) and [HBASE-29314](https://issues.apache.org/jira/browse/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`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org