You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2011/10/18 20:25:27 UTC
svn commit: r1185784 - in /hbase/branches/0.92: ./
src/main/java/org/apache/hadoop/hbase/regionserver/
src/test/java/org/apache/hadoop/hbase/regionserver/
Author: tedyu
Date: Tue Oct 18 18:25:27 2011
New Revision: 1185784
URL: http://svn.apache.org/viewvc?rev=1185784&view=rev
Log:
HBASE-4585 Revert for 0.92, patch is for TRUNK only
Modified:
hbase/branches/0.92/CHANGES.txt
hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/DeleteTracker.java
hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.java
hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksRead.java
hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestScanDeleteTracker.java
Modified: hbase/branches/0.92/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/CHANGES.txt?rev=1185784&r1=1185783&r2=1185784&view=diff
==============================================================================
--- hbase/branches/0.92/CHANGES.txt (original)
+++ hbase/branches/0.92/CHANGES.txt Tue Oct 18 18:25:27 2011
@@ -596,7 +596,6 @@ Release 0.92.0 - Unreleased
HBASE-4568 Make zk dump jsp response faster
HBASE-4606 Remove spam in HCM and fix a list.size == 0
HBASE-3581 hbase rpc should send size of response
- HBASE-4585 Avoid seek operation when current kv is deleted(Liyin Tang)
TASKS
Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/DeleteTracker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/DeleteTracker.java?rev=1185784&r1=1185783&r2=1185784&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/DeleteTracker.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/DeleteTracker.java Tue Oct 18 18:25:27 2011
@@ -51,9 +51,9 @@ public interface DeleteTracker {
* @param qualifierOffset column qualifier offset
* @param qualifierLength column qualifier length
* @param timestamp timestamp
- * @return deleteResult The result tells whether the KeyValue is deleted and why
+ * @return true is the specified KeyValue is deleted, false if not
*/
- public DeleteResult isDeleted(byte [] buffer, int qualifierOffset,
+ public boolean isDeleted(byte [] buffer, int qualifierOffset,
int qualifierLength, long timestamp);
/**
@@ -94,17 +94,4 @@ public interface DeleteTracker {
NEXT_NEW
}
- /**
- * Returns codes for delete result.
- * The codes tell the ScanQueryMatcher whether the kv is deleted and why.
- * Based on the delete result, the ScanQueryMatcher will decide the next
- * operation
- */
- public static enum DeleteResult {
- FAMILY_DELETED, // The KeyValue is deleted by a delete family.
- COLUMN_DELETED, // The KeyValue is deleted by a delete column.
- VERSION_DELETED, // The KeyValue is deleted by a version delete.
- NOT_DELETED
- }
-
}
Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.java?rev=1185784&r1=1185783&r2=1185784&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.java Tue Oct 18 18:25:27 2011
@@ -21,7 +21,6 @@
package org.apache.hadoop.hbase.regionserver;
import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.regionserver.DeleteTracker.DeleteResult;
import org.apache.hadoop.hbase.util.Bytes;
/**
@@ -100,13 +99,13 @@ public class ScanDeleteTracker implement
* @param qualifierOffset column qualifier offset
* @param qualifierLength column qualifier length
* @param timestamp timestamp
- * @return deleteResult
+ * @return true is the specified KeyValue is deleted, false if not
*/
@Override
- public DeleteResult isDeleted(byte [] buffer, int qualifierOffset,
+ public boolean isDeleted(byte [] buffer, int qualifierOffset,
int qualifierLength, long timestamp) {
if (timestamp <= familyStamp) {
- return DeleteResult.FAMILY_DELETED;
+ return true;
}
if (deleteBuffer != null) {
@@ -115,12 +114,12 @@ public class ScanDeleteTracker implement
if (ret == 0) {
if (deleteType == KeyValue.Type.DeleteColumn.getCode()) {
- return DeleteResult.COLUMN_DELETED;
+ return true;
}
// Delete (aka DeleteVersion)
// If the timestamp is the same, keep this one
if (timestamp == deleteTimestamp) {
- return DeleteResult.VERSION_DELETED;
+ return true;
}
// use assert or not?
assert timestamp < deleteTimestamp;
@@ -139,7 +138,7 @@ public class ScanDeleteTracker implement
}
}
- return DeleteResult.NOT_DELETED;
+ return false;
}
@Override
Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java?rev=1185784&r1=1185783&r2=1185784&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java Tue Oct 18 18:25:27 2011
@@ -26,7 +26,6 @@ import org.apache.hadoop.hbase.client.Sc
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.Filter.ReturnCode;
import org.apache.hadoop.hbase.io.TimeRange;
-import org.apache.hadoop.hbase.regionserver.DeleteTracker.DeleteResult;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
@@ -192,20 +191,15 @@ public class ScanQueryMatcher {
}
}
- if (!this.deletes.isEmpty()) {
- DeleteResult deleteResult = deletes.isDeleted(bytes, offset, qualLength,
- timestamp);
- switch (deleteResult) {
- case FAMILY_DELETED:
- case COLUMN_DELETED:
- return columns.getNextRowOrNextColumn(bytes, offset, qualLength);
- case VERSION_DELETED:
- return MatchCode.SKIP;
- case NOT_DELETED:
- break;
- default:
- throw new RuntimeException("UNEXPECTED");
- }
+ if (!this.deletes.isEmpty() &&
+ deletes.isDeleted(bytes, offset, qualLength, timestamp)) {
+
+ // May be able to optimize the SKIP here, if we matched
+ // due to a DelFam, we can skip to next row
+ // due to a DelCol, we can skip to next col
+ // But it requires more info out of isDelete().
+ // needful -> million column challenge.
+ return MatchCode.SKIP;
}
int timestampComparison = tr.compare(timestamp);
Modified: hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksRead.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksRead.java?rev=1185784&r1=1185783&r2=1185784&view=diff
==============================================================================
--- hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksRead.java (original)
+++ hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestBlocksRead.java Tue Oct 18 18:25:27 2011
@@ -283,14 +283,14 @@ public class TestBlocksRead extends HBas
deleteFamily(FAMILY, "row", 6);
region.flushcache();
- // Baseline expected blocks read: 4. [HBASE-4585]
- kvs = getData(FAMILY, "row", "col1", 4);
+ // Baseline expected blocks read: 6.
+ kvs = getData(FAMILY, "row", "col1", 6);
assertEquals(0, kvs.length);
- kvs = getData(FAMILY, "row", "col2", 5);
+ kvs = getData(FAMILY, "row", "col2", 6);
assertEquals(0, kvs.length);
- kvs = getData(FAMILY, "row", "col3", 4);
+ kvs = getData(FAMILY, "row", "col3", 6);
assertEquals(0, kvs.length);
- kvs = getData(FAMILY, "row", Arrays.asList("col1", "col2", "col3"), 5);
+ kvs = getData(FAMILY, "row", Arrays.asList("col1", "col2", "col3"), 6);
assertEquals(0, kvs.length);
// File 5: Delete
@@ -304,8 +304,8 @@ public class TestBlocksRead extends HBas
putData(FAMILY, "row", "col3", 9);
region.flushcache();
- // Baseline expected blocks read: 8. [HBASE-4585]
- kvs = getData(FAMILY, "row", Arrays.asList("col1", "col2", "col3"), 8);
+ // Baseline expected blocks read: 10
+ kvs = getData(FAMILY, "row", Arrays.asList("col1", "col2", "col3"), 10);
assertEquals(0, kvs.length);
// File 7: Put back new data
Modified: hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestScanDeleteTracker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestScanDeleteTracker.java?rev=1185784&r1=1185783&r2=1185784&view=diff
==============================================================================
--- hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestScanDeleteTracker.java (original)
+++ hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/regionserver/TestScanDeleteTracker.java Tue Oct 18 18:25:27 2011
@@ -23,7 +23,6 @@ package org.apache.hadoop.hbase.regionse
import org.apache.hadoop.hbase.HBaseTestCase;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.regionserver.DeleteTracker.DeleteResult;
import org.apache.hadoop.hbase.util.Bytes;
@@ -43,8 +42,8 @@ public class TestScanDeleteTracker exten
deleteType = KeyValue.Type.Delete.getCode();
sdt.add(qualifier, 0, qualifier.length, timestamp, deleteType);
- DeleteResult ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
- assertEquals(DeleteResult.VERSION_DELETED, ret);
+ boolean ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
+ assertEquals(true, ret);
}
public void testDeletedBy_DeleteColumn() {
@@ -53,8 +52,8 @@ public class TestScanDeleteTracker exten
sdt.add(qualifier, 0, qualifier.length, timestamp, deleteType);
timestamp -= 5;
- DeleteResult ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
- assertEquals(DeleteResult.COLUMN_DELETED, ret);
+ boolean ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
+ assertEquals(true, ret);
}
public void testDeletedBy_DeleteFamily() {
@@ -64,8 +63,8 @@ public class TestScanDeleteTracker exten
sdt.add(qualifier, 0, qualifier.length, timestamp, deleteType);
timestamp -= 5;
- DeleteResult ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
- assertEquals(DeleteResult.FAMILY_DELETED, ret);
+ boolean ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
+ assertEquals(true, ret);
}
public void testDelete_DeleteColumn() {
@@ -79,8 +78,8 @@ public class TestScanDeleteTracker exten
sdt.add(qualifier, 0, qualifier.length, timestamp, deleteType);
timestamp -= 5;
- DeleteResult ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
- assertEquals(DeleteResult.COLUMN_DELETED, ret);
+ boolean ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
+ assertEquals(true, ret);
}
@@ -94,8 +93,8 @@ public class TestScanDeleteTracker exten
deleteType = KeyValue.Type.Delete.getCode();
sdt.add(qualifier, 0, qualifier.length, timestamp, deleteType);
- DeleteResult ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
- assertEquals( DeleteResult.VERSION_DELETED, ret);
+ boolean ret = sdt.isDeleted(qualifier, 0, qualifier.length, timestamp);
+ assertEquals(true, ret);
}
//Testing new way where we save the Delete in case of a Delete for specific
@@ -110,4 +109,5 @@ public class TestScanDeleteTracker exten
assertEquals(false ,sdt.isEmpty());
}
+
}