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) {