hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ming Ma (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-4081) Issues with HRegion.compactStores methods
Date Fri, 08 Jul 2011 23:36:16 GMT
Issues with HRegion.compactStores methods

                 Key: HBASE-4081
                 URL: https://issues.apache.org/jira/browse/HBASE-4081
             Project: HBase
          Issue Type: Bug
          Components: regionserver
            Reporter: Ming Ma
            Assignee: Ming Ma


  byte [] compactStores(final boolean majorCompaction)
  throws IOException {
    if (majorCompaction) {
    return compactStores();

   * Compact all the stores and return the split key of the first store that needs
   * to be split.
  public byte[] compactStores() throws IOException {
    for(Store s : getStores().values()) {
      CompactionRequest cr = s.requestCompaction();
      if(cr != null) {
        try {
        } finally {
      byte[] splitRow = s.checkSplit();
      if (splitRow != null) {
        return splitRow;
    return null;

1. It seems the second method's intention is to compact all the stores. However, if a store
requires split, the process will stop.
2. Only MetaUtils, HRegion.merge, HRegion.processTable use these two methods. No caller uses
the return value.
3. HRegion.merge expects major compaction for each store after the call and has code like
below to check error condition.

      // Because we compacted the source regions we should have no more than two
      // HStoreFiles per family and there will be no reference store
      if (srcFiles.size() == 2)

So it seems like the fixes are: a) take out s.CheckSplit() call inside compactStores. b) make
the return type "void" for these two compactStores functions.

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


View raw message