Shuaifeng Zhou created HBASE-14735:
--------------------------------------

             Summary: Region may grow too big and can not be split
                 Key: HBASE-14735
                 URL: https://issues.apache.org/jira/browse/HBASE-14735
             Project: HBase
          Issue Type: Bug
          Components: Compaction, regionserver
    Affects Versions: 0.98.15, 1.1.2
            Reporter: Shuaifeng Zhou
            Assignee: Shuaifeng Zhou


When a compaction completed, may there are also many storefiles in the store, 
and CompactPriority < 0, then compactSplitThread will do a "Recursive enqueue" 
compaction request instead of request a split:
{code:title=CompactSplitThread.java|borderStyle=solid}
        if (completed) {
          // degenerate case: blocked regions require recursive enqueues
          if (store.getCompactPriority() <= 0) {
            requestSystemCompaction(region, store, "Recursive enqueue");
          } else {
            // see if the compaction has caused us to exceed max region size
            requestSplit(region);
          }
{code}
But in some situation, the "recursive enqueue" request may return null, and not 
build up a new compaction runner. For example, an other compaction of the same 
region is running, and compaction selection will exclude all files older than 
the newest files currently compacting, this may cause no enough files can be 
selected by the "recursive enqueue" request. When this happen, split will not 
be trigged. If the input load is high enough, compactions aways running on the 
region, and split will never be triggered.
In our cluster, this situation happened, and a huge region more than 400GB and 
100+ storefiles appeared. Version is 0.98.10, and the trank also have the 
problem.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to