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

Hudson commented on HBASE-5920:
-------------------------------

Integrated in HBase-0.94 #202 (See 
[https://builds.apache.org/job/HBase-0.94/202/])
    HBASE-5920 New Compactions Logic can silently prevent user-initiated 
compactions from occurring (Revision 1340283)

     Result = SUCCESS
stack : 
Files : 
* 
/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
* 
/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
* 
/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
* 
/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java

                
> New Compactions Logic can silently prevent user-initiated compactions from 
> occurring
> ------------------------------------------------------------------------------------
>
>                 Key: HBASE-5920
>                 URL: https://issues.apache.org/jira/browse/HBASE-5920
>             Project: HBase
>          Issue Type: Bug
>          Components: client, regionserver
>    Affects Versions: 0.92.1
>            Reporter: Derek Wollenstein
>            Assignee: Derek Wollenstein
>            Priority: Minor
>              Labels: compaction
>         Attachments: 5290-094.txt, HBASE-5920-0.92.1-1.patch, 
> HBASE-5920-0.92.1-2.patch, HBASE-5920-0.92.1.patch, HBASE-5920-trunk-1.patch, 
> HBASE-5920-trunk.patch
>
>
> There seem to be some tuning settings in which manually triggered major 
> compactions will do nothing, including loggic
> From Store.java in the function
>   List<StoreFile> compactSelection(List<StoreFile> candidates)
> When a user manually triggers a compaction, this follows the same logic as a 
> normal compaction check.  when a user manually triggers a major compaction, 
> something similar happens.  Putting this all together:
> 1. If a user triggers a major compaction, this is checked against a max files 
> threshold (hbase.hstore.compaction.max). If the number of storefiles to 
> compact is > max files, then we downgrade to a minor compaction
> 2. If we are in a minor compaction, we do the following checks:
>    a. If the file is less than a minimum size 
> (hbase.hstore.compaction.min.size) we automatically include it
>    b. Otherwise, we check how the size compares to the next largest size.  
> based on hbase.hstore.compaction.ratio.  
>   c. If the number of files included is less than a minimum count 
> (hbase.hstore.compaction.min) then don't compact.
> In many of the exit strategies, we aren't seeing an error message.
> The net-net of this is that if we have a mix of very large and very small 
> files, we may end up having too many files to do a major compact, but too few 
> files to do a minor compact.
> I'm trying to go through and see if I'm understanding things correctly, but 
> this seems like the bug
> To put it another way
> 2012-05-02 20:09:36,389 DEBUG 
> org.apache.hadoop.hbase.regionserver.CompactSplitThread: Large Compaction 
> requested: 
> regionName=str,44594594594594592,1334939064521.f7aed25b55d4d7988af763bede9ce74e.,
>  store
> Name=c, fileCount=15, fileSize=1.5g (20.2k, 362.5m, 155.3k, 3.0m, 30.7k, 
> 361.2m, 6.9m, 4.7m, 14.7k, 363.4m, 30.9m, 3.2m, 7.3k, 362.9m, 23.5m), 
> priority=-9, time=3175046817624398; Because: Recursive enqueue; 
> compaction_queue=(59:0), split_queue=0
> When we had a minimum compaction size of 128M, and default settings for 
> hbase.hstore.compaction.min,hbase.hstore.compaction.max,hbase.hstore.compaction.ratio,
>  we were not getting a compaction to run even if we ran
> major_compact 
> 'str,44594594594594592,1334939064521.f7aed25b55d4d7988af763bede9ce74e.' from 
> the ruby shell.  Note that we had many tiny regions (20k, 155k, 3m, 30k,..) 
> and several large regions (362.5m,361.2m,363.4m,362.9m).  I think the bimodal 
> nature of the sizes prevented us from doing a compaction.
> I'm not 100% sure where this errored out because when I manually triggered a 
> compaction, I did not see
> '      // if we don't have enough files to compact, just wait             
>       if (filesToCompact.size() < this.minFilesToCompact) {              
>         if (LOG.isDebugEnabled()) {                                      
>           LOG.debug("Skipped compaction of " + this.storeNameStr         
>             + ".  Only " + (end - start) + " file(s) of size "           
>             + StringUtils.humanReadableInt(totalSize)                    
>             + " have met compaction criteria.");                         
>         }                                                                
> ' 
> being printed in the logs (and I know DEBUG logging was enabled because I saw 
> this elsewhere).  
> I'd be happy with better error messages when we decide not to compact for 
> user enabled compactions.
> I'd also like to see some override that says "user triggered major compaction 
> always occurs", but maybe that's a bad idea for other reasons.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to