You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2009/10/30 23:23:08 UTC

svn commit: r831473 - in /hadoop/hbase/trunk: CHANGES.txt src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/tableindexed/IndexedRegion.java

Author: stack
Date: Fri Oct 30 22:23:08 2009
New Revision: 831473

URL: http://svn.apache.org/viewvc?rev=831473&view=rev
Log:
HBASE-1682 IndexedRegion does not properly handle deletes

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/tableindexed/IndexedRegion.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=831473&r1=831472&r2=831473&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Fri Oct 30 22:23:08 2009
@@ -84,6 +84,8 @@
    HBASE-1927  Scanners not closed properly in certain circumstances
    HBASE-1934  NullPointerException in ClientScanner (Andrew Purtell via Stack)
    HBASE-1946  Unhandled exception at regionserver (Dmitriy Lyfar via Stack)
+   HBASE-1682  IndexedRegion does not properly handle deletes
+               (Andrew McCall via Clint Morgan and Stack)
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/tableindexed/IndexedRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/tableindexed/IndexedRegion.java?rev=831473&r1=831472&r2=831473&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/tableindexed/IndexedRegion.java (original)
+++ hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/tableindexed/IndexedRegion.java Fri Oct 30 22:23:08 2009
@@ -229,7 +229,7 @@
   @Override
   public void delete(Delete delete, final Integer lockid, boolean writeToWAL)
       throws IOException {
-
+    // First remove the existing indexes.
     if (!getIndexes().isEmpty()) {
       // Need all columns
       NavigableSet<byte[]> neededColumns = getColumnsForIndexes(getIndexes());
@@ -251,13 +251,17 @@
       for (IndexSpecification indexSpec : getIndexes()) {
         removeOldIndexEntry(indexSpec, delete.getRow(), oldColumnValues);
       }
+    }
+    
+    super.delete(delete, lockid, writeToWAL);
 
-      // Handle if there is still a version visible.
-      if (delete.getTimeStamp() != HConstants.LATEST_TIMESTAMP) {
-        get.setTimeRange(1, delete.getTimeStamp());
-        oldRow = super.get(get, lockid);
-        SortedMap<byte[], byte[]> currentColumnValues = convertToValueMap(oldRow);
-        
+    if (!getIndexes().isEmpty()) {
+      Get get = new Get(delete.getRow());
+      
+      // Rebuild index if there is still a version visible.
+      Result currentRow = super.get(get, lockid);
+      if (!currentRow.isEmpty()) {
+        SortedMap<byte[], byte[]> currentColumnValues = convertToValueMap(currentRow);
         for (IndexSpecification indexSpec : getIndexes()) {
           if (IndexMaintenanceUtils.doesApplyToIndex(indexSpec, currentColumnValues)) {
             updateIndex(indexSpec, delete.getRow(), currentColumnValues);
@@ -265,7 +269,7 @@
         }
       }
     }
-    super.delete(delete, lockid, writeToWAL);
+   
   }
 
   private SortedMap<byte[], byte[]> convertToValueMap(Result result) {