You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2010/11/09 00:59:40 UTC
svn commit: r1032790 - in /hbase/trunk: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java
Author: jdcryans
Date: Mon Nov 8 23:59:39 2010
New Revision: 1032790
URL: http://svn.apache.org/viewvc?rev=1032790&view=rev
Log:
HBASE-3208 HLog.findMemstoresWithEditsOlderThan needs to look for edits
that are equal to too
Modified:
hbase/trunk/CHANGES.txt
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java
Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1032790&r1=1032789&r2=1032790&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Mon Nov 8 23:59:39 2010
@@ -658,6 +658,8 @@ Release 0.90.0 - Unreleased
HBASE-3204 Reenable deferred log flush
HBASE-3195 [rest] Fix TestTransform breakage on Hudson
HBASE-3205 TableRecordReaderImpl.restart NPEs when first next is restarted
+ HBASE-3208 HLog.findMemstoresWithEditsOlderThan needs to look for edits
+ that are equal to too
IMPROVEMENTS
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java?rev=1032790&r1=1032789&r2=1032790&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java Mon Nov 8 23:59:39 2010
@@ -642,7 +642,7 @@ public class HLog implements Syncable {
if (logCount > this.maxLogs && this.outputfiles != null &&
this.outputfiles.size() > 0) {
// This is an array of encoded region names.
- regions = findMemstoresWithEditsOlderThan(this.outputfiles.firstKey(),
+ regions = findMemstoresWithEditsEqualOrOlderThan(this.outputfiles.firstKey(),
this.lastSeqWritten);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < regions.length; i++) {
@@ -657,19 +657,19 @@ public class HLog implements Syncable {
}
/**
- * Return regions (memstores) that have edits that are less than the passed
- * <code>oldestWALseqid</code>.
+ * Return regions (memstores) that have edits that are equal or less than
+ * the passed <code>oldestWALseqid</code>.
* @param oldestWALseqid
* @param regionsToSeqids
* @return All regions whose seqid is < than <code>oldestWALseqid</code> (Not
* necessarily in order). Null if no regions found.
*/
- static byte [][] findMemstoresWithEditsOlderThan(final long oldestWALseqid,
+ static byte [][] findMemstoresWithEditsEqualOrOlderThan(final long oldestWALseqid,
final Map<byte [], Long> regionsToSeqids) {
// This method is static so it can be unit tested the easier.
List<byte []> regions = null;
for (Map.Entry<byte [], Long> e: regionsToSeqids.entrySet()) {
- if (e.getValue().longValue() < oldestWALseqid) {
+ if (e.getValue().longValue() <= oldestWALseqid) {
if (regions == null) regions = new ArrayList<byte []>();
regions.add(e.getKey());
}
Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java?rev=1032790&r1=1032789&r2=1032790&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLog.java Mon Nov 8 23:59:39 2010
@@ -262,28 +262,30 @@ public class TestHLog {
}
/**
- * Test the findMemstoresWithEditsOlderThan method.
+ * Test the findMemstoresWithEditsEqualOrOlderThan method.
* @throws IOException
*/
@Test
- public void testFindMemstoresWithEditsOlderThan() throws IOException {
+ public void testFindMemstoresWithEditsEqualOrOlderThan() throws IOException {
Map<byte [], Long> regionsToSeqids = new HashMap<byte [], Long>();
for (int i = 0; i < 10; i++) {
Long l = Long.valueOf(i);
regionsToSeqids.put(l.toString().getBytes(), l);
}
byte [][] regions =
- HLog.findMemstoresWithEditsOlderThan(1, regionsToSeqids);
- assertEquals(1, regions.length);
- assertTrue(Bytes.equals(regions[0], "0".getBytes()));
- regions = HLog.findMemstoresWithEditsOlderThan(3, regionsToSeqids);
- int count = 3;
+ HLog.findMemstoresWithEditsEqualOrOlderThan(1, regionsToSeqids);
+ assertEquals(2, regions.length);
+ assertTrue(Bytes.equals(regions[0], "0".getBytes()) ||
+ Bytes.equals(regions[0], "1".getBytes()));
+ regions = HLog.findMemstoresWithEditsEqualOrOlderThan(3, regionsToSeqids);
+ int count = 4;
assertEquals(count, regions.length);
// Regions returned are not ordered.
for (int i = 0; i < count; i++) {
assertTrue(Bytes.equals(regions[i], "0".getBytes()) ||
Bytes.equals(regions[i], "1".getBytes()) ||
- Bytes.equals(regions[i], "2".getBytes()));
+ Bytes.equals(regions[i], "2".getBytes()) ||
+ Bytes.equals(regions[i], "3".getBytes()));
}
}