Author: nspiegelberg
Date: Tue Oct 11 02:06:42 2011
New Revision: 1181416

URL: http://svn.apache.org/viewvc?rev=1181416&view=rev
Log:
additional instrumentation for debugging IllegalArgumentException in scanner

Summary:
additional instrumentation for debugging IllegalArgumentException in scanner

Reviewed By:aravind

Test Plan:push to dev cluster and ran compaction tests.

Modified:
    
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java
    
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
    
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java

Modified: 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java?rev=1181416&r1=1181415&r2=1181416&view=diff
==============================================================================
--- 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java 
(original)
+++ 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java 
Tue Oct 11 02:06:42 2011
@@ -1291,7 +1291,17 @@ public class HFile {
         if (block == null) {
           throw new IOException("Next called on non-seeked scanner");
         }
-        block.position(block.position() + currKeyLen + currValueLen);
+        try {
+          block.position(block.position() + currKeyLen + currValueLen);
+        } catch (IllegalArgumentException e) {
+          LOG.error("Current pos = " + block.position() +
+                    "; currKeyLen = " + currKeyLen +
+                    "; currValLen = " + currValueLen +
+                    "; block limit = " + block.limit() +
+                    "; HFile name = " + reader.getName() +
+                    "; currBlock id = " + this.currBlock);
+          throw e;
+        }
         if (block.remaining() <= 0) {
           // LOG.debug("Fetch next block");
           currBlock++;

Modified: 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=1181416&r1=1181415&r2=1181416&view=diff
==============================================================================
--- 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
 (original)
+++ 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
 Tue Oct 11 02:06:42 2011
@@ -797,10 +797,13 @@ public class Store implements HeapSize {
       if (r != null) {
         // NOTE: getFilterEntries could cause under-sized blooms if the user
         //       switches bloom type (e.g. from ROW to ROWCOL)
-        maxKeyCount += (r.getBloomFilterType() == family.getBloomFilterType())
-          ? r.getFilterEntries() : r.getEntries();
+        int keyCount = (r.getBloomFilterType() == family.getBloomFilterType())
+            ? r.getFilterEntries() : r.getEntries();
+        maxKeyCount += keyCount;
+        LOG.info("Compacting: " + file + "; keyCount = " + keyCount + "; Bloom 
Type = " + r.getBloomFilterType().toString());
       }
     }
+    LOG.info("Estimated total keyCount for output of compaction = " + 
maxKeyCount);
 
     // For each file, obtain a scanner:
     List<StoreFileScanner> scanners = StoreFileScanner

Modified: 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java?rev=1181416&r1=1181415&r2=1181416&view=diff
==============================================================================
--- 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
 (original)
+++ 
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
 Tue Oct 11 02:06:42 2011
@@ -854,7 +854,8 @@ public class StoreFile {
           int b = this.bloomFilter.getByteSize();
           int k = this.bloomFilter.getKeyCount();
           int m = this.bloomFilter.getMaxKeys();
-          StoreFile.LOG.info("Bloom added to HFile.  " + b + "B, " +
+          StoreFile.LOG.info("Bloom added to HFile ("
+              + getPath() + "): " + b + "B, " +
               k + "/" + m + " (" + NumberFormat.getPercentInstance().format(
                 ((double)k) / ((double)m)) + ")");
         }


Reply via email to