huaxiang sun created HBASE-15456:
------------------------------------
Summary: CreateTableProcedure/ModifyTableProcedure needs to fail
when there is no family in descriptor
Key: HBASE-15456
URL: https://issues.apache.org/jira/browse/HBASE-15456
Project: HBase
Issue Type: Improvement
Components: master
Affects Versions: 2.0.0
Reporter: huaxiang sun
Assignee: huaxiang sun
Priority: Minor
If there is only one family in the table, DeleteColumnFamilyProcedure will
fail.
Currently, when hbase.table.sanity.checks is set to false, hbase master logs a
warning and CreateTableProcedure/ModifyTableProcedure will succeed.
This behavior is not consistent with DeleteColumnFamilyProcedure's.
Another point, before HBASE-13145, PeriodicMemstoreFlusher will run into the
following exception if there is no family in the table, lastStoreFlushTimeMap
is populated for families, if there is no family in the table, there is no
entry in lastStoreFlushTimeMap.
16/02/01 11:14:26 ERROR regionserver.HRegionServer$PeriodicMemstoreFlusher:
Caught exception
java.util.NoSuchElementException
at
java.util.concurrent.ConcurrentHashMap$HashIterator.nextEntry(ConcurrentHashMap.java:1354)
at
java.util.concurrent.ConcurrentHashMap$ValueIterator.next(ConcurrentHashMap.java:1384)
at java.util.Collections.min(Collections.java:628)
at
org.apache.hadoop.hbase.regionserver.HRegion.getEarliestFlushTimeForAllStores(HRegion.java:1572)
at org.apache.hadoop.hbase.regionserver.HRegion.shouldFlush(HRegion.java:1904)
at
org.apache.hadoop.hbase.regionserver.HRegionServer$PeriodicMemstoreFlusher.chore(HRegionServer.java:1509)
at org.apache.hadoop.hbase.Chore.run(Chore.java:87)
at java.lang.Thread.run(Thread.java:745)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)