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());
   }
 
+
 }