You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Nicolas Spiegelberg (JIRA)" <ji...@apache.org> on 2011/04/29 01:12:03 UTC

[jira] [Commented] (HBASE-3826) Minor compaction needs to check if still over compactionThreshold after compacting

    [ https://issues.apache.org/jira/browse/HBASE-3826?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13026764#comment-13026764 ] 

Nicolas Spiegelberg commented on HBASE-3826:
--------------------------------------------

I think recursive compactions are pretty dangerous.  Although re-enqueuing after compaction is the optimal solution, Exceptions or other weird bugs in the compaction code would cause spin-waiting problems.  I think the optimal solution is to have quick response for the blocking StoreFile case and asynchronous, rate-limited enqueuing for less severe cases.

> Minor compaction needs to check if still over compactionThreshold after compacting
> ----------------------------------------------------------------------------------
>
>                 Key: HBASE-3826
>                 URL: https://issues.apache.org/jira/browse/HBASE-3826
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver
>    Affects Versions: 0.90.1
>         Environment: hbase-0.90.1
> hbase-0.90.1-cdh3u0
>            Reporter: Schubert Zhang
>            Assignee: Nicolas Spiegelberg
>              Labels: compaction
>             Fix For: 0.92.0
>
>
> I have a busy region, and there are 43 StoreFiles (>compactionThreshold=8) in this region.
> Now, I stopped the client and stopped putting new data into it. I expect these StoreFiles to be compacted later.
>  
> But, almost one day later, these 43 StoreFiles are still there.
> (Note: in my hbase instance, I disabled the major compaction.)
>  
> It seems the minor compaction does not be started continuiously to compact remaining storefiles.
> And I checked the code, it is true.
> -----
> After more test, a obvious issue/problem is, the complete of a minor compaction does not check if current storefiles need more minor compaction.
>  
> I think this may be a bug or leak.
>  
> Try this test:
>  
> 1. Put many data to a region, then there are 30 storefiles accumulated, because the backend compaction cannot catch up with the fast puts. (hbase.hstore.compactionThreshold=8, base.hstore.compaction.max=12)
>  
> 2. Then stop put.
>  
> 3. Then, these 30 storefiles are still there for a long time, (no automatic minor compaction)
>  
> 4. Submit a compaction on this region, then, only 12 files are compaction, now, we have 19 storefiles. The minor compaction stopped.
>  
> I think, when a minor compaction complete, it should check if the number of storefiles still many, if so, another minor compaction should start continuiously.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira