Index: src/main/java/org/apache/hadoop/hbase/util/HMerge.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/util/HMerge.java (revision 1182645) +++ src/main/java/org/apache/hadoop/hbase/util/HMerge.java (working copy) @@ -19,6 +19,12 @@ */ package org.apache.hadoop.hbase.util; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Random; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -44,12 +50,6 @@ import org.apache.hadoop.hbase.regionserver.InternalScanner; import org.apache.hadoop.hbase.regionserver.wal.HLog; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Random; - /** * A non-instantiable class that has a static method capable of compacting * a table by merging adjacent regions. @@ -370,14 +370,16 @@ try { List results = new ArrayList(); - while(rootScanner.next(results)) { + boolean hasMore; + do { + hasMore = rootScanner.next(results); for(KeyValue kv: results) { HRegionInfo info = Writables.getHRegionInfoOrNull(kv.getValue()); if (info != null) { metaRegions.add(info); } } - } + } while (hasMore); } finally { rootScanner.close(); try { Index: src/main/java/org/apache/hadoop/hbase/regionserver/Store.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/Store.java (revision 1182645) +++ src/main/java/org/apache/hadoop/hbase/regionserver/Store.java (working copy) @@ -1146,7 +1146,9 @@ // we have to use a do/while loop. ArrayList kvs = new ArrayList(); // Limit to "hbase.hstore.compaction.kv.max" (default 10) to avoid OOME - while (scanner.next(kvs,this.compactionKVMax)) { + boolean hasMore; + do { + hasMore = scanner.next(kvs, this.compactionKVMax); if (writer == null && !kvs.isEmpty()) { writer = createWriterInTmp(maxKeyCount, this.compactionCompression); @@ -1176,7 +1178,7 @@ } } kvs.clear(); - } + } while (hasMore); } finally { if (scanner != null) { scanner.close();