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

Liang Xie commented on HBASE-8892:
----------------------------------

older  ---->  newer
f1 f2 f3 ... f10 f11 f12

let's say maxFilesToCompact=10, per current code, it'll pick [f3,f12], right? 
then generate a bigger/newer file,say f13, now it becomes:

older -----> newer
f1 f2 f13

then f1 and f2 will be hard to be picked up in later minor compaction based on 
currently ratio policy.
                
> should pick the files as older as possible also while hasReferences
> -------------------------------------------------------------------
>
>                 Key: HBASE-8892
>                 URL: https://issues.apache.org/jira/browse/HBASE-8892
>             Project: HBase
>          Issue Type: Bug
>          Components: Compaction
>    Affects Versions: 0.94.9
>            Reporter: Liang Xie
>            Assignee: Liang Xie
>            Priority: Minor
>         Attachments: HBase-8892-0.94.txt
>
>
> Currently, while hasReferences for compactSelection, and if 
> compactSelection.getFilesToCompact() has more than maxFilesToCompact files, 
> we clear the files from beginning, it's different with the normal minor 
> compaction ratio based policy, which tries to do compactSelection from older 
> to newer ones as possible.
> {code}
>       } else if (compactSelection.getFilesToCompact().size() > 
> this.maxFilesToCompact) {
>         // all files included in this compaction, up to max
>         int pastMax = compactSelection.getFilesToCompact().size() - 
> this.maxFilesToCompact;
>         compactSelection.getFilesToCompact().subList(0, pastMax).clear();
> {code}
> It makes the beginning files more difficult to be picked up in future's minor 
> compaction stage.
> IMHO, it should be like this:
> {code}
>         compactSelection.getFilesToCompact()
>             .subList(this.maxFilesToCompact, 
> compactSelection.getFilesToCompact().size())
>             .clear();
> {code}
> It's not a big issue, since occurs while hasReferences returns true only.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to