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/03/25 10:09:49 UTC

svn commit: r758183 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/HRegion.java

Author: stack
Date: Wed Mar 25 09:09:43 2009
New Revision: 758183

URL: http://svn.apache.org/viewvc?rev=758183&view=rev
Log:
HBASE-803  Atomic increment operations -- part 2 -- fix crash

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=758183&r1=758182&r2=758183&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Wed Mar 25 09:09:43 2009
@@ -105,6 +105,7 @@
    HBASE-1240  Would be nice if RowResult could be comparable
                (Erik Holstad via Stack)
    HBASE-803   Atomic increment operations (Ryan Rawson and Jon Gray via Stack)
+               Part 1 and part 2 -- fix for a crash.
    HBASE-1252  Make atomic increment perform a binary increment
                (Jonathan Gray via Stack)
    HBASE-1258,1259 ganglia metrics for 'requests' is confusing
@@ -117,7 +118,6 @@
                (Nitay Joffe via Stack)
 
 
-
 Release 0.19.0 - 01/21/2009
   INCOMPATIBLE CHANGES
    HBASE-885   TableMap and TableReduce should be interfaces

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=758183&r1=758182&r2=758183&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Wed Mar 25 09:09:43 2009
@@ -2613,23 +2613,20 @@
       } finally {
         store.lock.readLock().unlock();
       }
-      if (c.size() == 1) {
+      // Pick the latest value out of List<Cell> c:
+      if (c.size() >= 1) {
         // Use the memcache timestamp value.
         LOG.debug("Overwriting the memcache value for " + Bytes.toString(row) + "/" + Bytes.toString(column));
         ts = c.get(0).getTimestamp();
         value = c.get(0).getValue();
-      } else if (c.size() > 1) {
-        throw new DoNotRetryIOException("more than 1 value returned in incrementColumnValue from memcache");
       }
 
       if (value == null) {
         // Check the store (including disk) for the previous value.
         Cell[] cell = store.get(hsk, 1);
-        if (cell != null && cell.length == 1) {
+        if (cell != null && cell.length >= 1) {
           LOG.debug("Using HFile previous value for " + Bytes.toString(row) + "/" + Bytes.toString(column));
           value = cell[0].getValue();
-        } else if (cell != null && c.size() > 1) {
-          throw new DoNotRetryIOException("more than 1 value returned in incrementColumnValue from Store");
         }
       }