Author: apurtell
Date: Wed Sep  2 22:24:51 2009
New Revision: 810716

URL: http://svn.apache.org/viewvc?rev=810716&view=rev
Log:
HBASE-1715 Compaction failure in ScanWildcardColumnTracker.checkColumn

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

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=810716&r1=810715&r2=810716&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Wed Sep  2 22:24:51 2009
@@ -366,6 +366,7 @@
    HBASE-1810  ConcurrentModificationException in region assignment
                (Mathias Herberts via Stack)
    HBASE-1804  Puts are permitted (and stored) when including an appended colon
+   HBASE-1715  Compaction failure in ScanWildcardColumnTracker.checkColumn
 
   IMPROVEMENTS
    HBASE-1089  Add count of regions on filesystem to master UI; add percentage

Modified: 
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java
URL: 
http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java?rev=810716&r1=810715&r2=810716&view=diff
==============================================================================
--- 
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java
 (original)
+++ 
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java
 Wed Sep  2 22:24:51 2009
@@ -20,6 +20,8 @@
 
 package org.apache.hadoop.hbase.regionserver;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.regionserver.QueryMatcher.MatchCode;
 import org.apache.hadoop.hbase.util.Bytes;
 
@@ -27,6 +29,8 @@
  * Keeps track of the columns for a scan if they are not explicitly specified
  */
 public class ScanWildcardColumnTracker implements ColumnTracker {
+  private static final Log LOG = 
+    LogFactory.getLog(ScanWildcardColumnTracker.class);
   private byte [] columnBuffer = null;
   private int columnOffset = 0;
   private int columnLength = 0;
@@ -79,15 +83,27 @@
       columnOffset = offset;
       columnLength = length;
       currentCount = 0;
-      
       if (++currentCount > maxVersions)
         return MatchCode.SKIP;
       return MatchCode.INCLUDE;
     }
+
     // new col < oldcol
     // if (cmp < 0) {
-    throw new RuntimeException("ScanWildcardColumnTracker.checkColumn ran " +
-               "into a column actually smaller than the previous column!");
+    // WARNING: This means that very likely an edit for some other family
+    // was incorrectly stored into the store for this one. Continue, but
+    // complain.
+    LOG.error("ScanWildcardColumnTracker.checkColumn ran " +
+               "into a column actually smaller than the previous column: " +
+      Bytes.toStringBinary(bytes, offset, length));
+    // switched columns
+    columnBuffer = bytes;
+    columnOffset = offset;
+    columnLength = length;
+    currentCount = 0;
+    if (++currentCount > maxVersions)
+      return MatchCode.SKIP;
+    return MatchCode.INCLUDE;    
   }
 
   @Override


Reply via email to