Details
-
Bug
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
2.0.0-alpha-4
-
None
-
Reviewed
Description
Since HBASE-12363 we start using an enum instead of boolean for keep_deleted_cells. In ColumnFamilyDescriptorBuilder we are using valueOf to find out the value of the property. But there is a problem: all values in ENUM are uppercase, so if we provide the value in lowercase (and java Boolean returns it in lowercase in toString), the table creation may fail with an exception:
java.io.IOException: java.lang.IllegalArgumentException: No enum constant org.apache.hadoop.hbase.KeepDeletedCells.true at org.apache.hadoop.hbase.regionserver.HRegion.initializeStores(HRegion.java:1028) at org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:891) at org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:859) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6966) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6923) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6894) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6850) at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6801) at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:285) at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:110) at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:104) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.hadoop.hbase.KeepDeletedCells.true at java.lang.Enum.valueOf(Enum.java:238) at org.apache.hadoop.hbase.KeepDeletedCells.valueOf(KeepDeletedCells.java:30) at org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder$ModifyableColumnFamilyDescriptor.lambda$getStringOrDefault$23(ColumnFamilyDescriptorBuilder.java:719) at org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder$ModifyableColumnFamilyDescriptor.getOrDefault(ColumnFamilyDescriptorBuilder.java:727) at org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder$ModifyableColumnFamilyDescriptor.getStringOrDefault(ColumnFamilyDescriptorBuilder.java:719) at org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder$ModifyableColumnFamilyDescriptor.getKeepDeletedCells(ColumnFamilyDescriptorBuilder.java:901) at org.apache.hadoop.hbase.regionserver.ScanInfo.<init>(ScanInfo.java:69) at org.apache.hadoop.hbase.regionserver.HStore.<init>(HStore.java:265) at org.apache.hadoop.hbase.regionserver.HRegion.instantiateHStore(HRegion.java:5485) at org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:992) at org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:989) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Attachments
Attachments
Issue Links
- is part of
-
HBASE-19307 Ignore the case of string when lookup the enum property from configuration
- Open