Major compact should be done when there is only one storefile and some keyvalue 
is outdated.
--------------------------------------------------------------------------------------------

                 Key: HBASE-3723
                 URL: https://issues.apache.org/jira/browse/HBASE-3723
             Project: HBase
          Issue Type: Bug
          Components: regionserver
    Affects Versions: 0.90.1, 0.90.0
            Reporter: zhoushuaifeng
             Fix For: 0.90.2


In the function store.isMajorCompaction:
      if (filesToCompact.size() == 1) {
        // Single file
        StoreFile sf = filesToCompact.get(0);
        long oldest =
            (sf.getReader().timeRangeTracker == null) ?
                Long.MIN_VALUE :
                now - sf.getReader().timeRangeTracker.minimumTimestamp;
        if (sf.isMajorCompaction() &&
            (this.ttl == HConstants.FOREVER || oldest < this.ttl)) {
          if (LOG.isDebugEnabled()) {
            LOG.debug("Skipping major compaction of " + this.storeNameStr +
                " because one (major) compacted file only and oldestTime " +
                oldest + "ms is < ttl=" + this.ttl);
          }
        }
      } else {
When there is only one storefile in the store, and some keyvalues' TTL are 
overtime, the majorcompactchecker should send this region to the compactquene 
and run a majorcompact to clean these outdated data. But according to the code 
in 0.90.1, it will do nothing. 

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

Reply via email to