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 2012/08/26 20:59:26 UTC

svn commit: r1377483 - in /hbase/trunk/hbase-server/src: main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java main/java/org/apache/hadoop/hbase/regionserver/HStore.java test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java

Author: stack
Date: Sun Aug 26 18:59:25 2012
New Revision: 1377483

URL: http://svn.apache.org/viewvc?rev=1377483&view=rev
Log:
HBASE-5997 Fix concerns raised in HBASE-5922 related to HalfStoreFileReader; REVERT

Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java?rev=1377483&r1=1377482&r2=1377483&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java Sun Aug 26 18:59:25 2012
@@ -54,10 +54,6 @@ public class HalfStoreFileReader extends
   // This is the key we split around.  Its the first possible entry on a row:
   // i.e. empty column and a timestamp of LATEST_TIMESTAMP.
   protected final byte [] splitkey;
-  
-  private byte[] firstKey = null;
-  
-  private boolean firstKeySeeked = false;
 
   /**
    * @param fs
@@ -147,11 +143,8 @@ public class HalfStoreFileReader extends
       public boolean seekBefore(byte [] key, int offset, int length)
       throws IOException {
         if (top) {
-          byte[] fk = getFirstKey();
-          // This will be null when the file is empty in which we can not seekBefore to any key
-          if (fk == null) return false;
-          if (getComparator().compare(key, offset, length, fk, 0,
-              fk.length) <= 0) {
+          if (getComparator().compare(key, offset, length, splitkey, 0,
+              splitkey.length) < 0) {
             return false;
           }
         } else {
@@ -280,20 +273,4 @@ public class HalfStoreFileReader extends
     // Returns null to indicate file is not splitable.
     return null;
   }
-  
-  @Override
-  public byte[] getFirstKey() {
-    if (!firstKeySeeked) {
-      HFileScanner scanner = getScanner(true, true, false);
-      try {
-        if (scanner.seekTo()) {
-          this.firstKey = Bytes.toBytes(scanner.getKey());
-        }
-        firstKeySeeked = true;
-      } catch (IOException e) {
-        LOG.warn("Failed seekTo first KV in the file", e);
-      }
-    }
-    return this.firstKey;
-  }
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java?rev=1377483&r1=1377482&r2=1377483&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java Sun Aug 26 18:59:25 2012
@@ -1698,7 +1698,6 @@ public class HStore extends SchemaConfig
     }
     // TODO: Cache these keys rather than make each time?
     byte [] fk = r.getFirstKey();
-    if (fk == null) return;
     KeyValue firstKV = KeyValue.createKeyValueFromKey(fk, 0, fk.length);
     byte [] lk = r.getLastKey();
     KeyValue lastKV = KeyValue.createKeyValueFromKey(lk, 0, lk.length);
@@ -1712,7 +1711,7 @@ public class HStore extends SchemaConfig
       firstOnRow = new KeyValue(lastKV.getRow(), HConstants.LATEST_TIMESTAMP);
     }
     // Get a scanner that caches blocks and that uses pread.
-    HFileScanner scanner = r.getScanner(true, true, false);
+    HFileScanner scanner = r.getHFileReader().getScanner(true, true, false);
     // Seek scanner.  If can't seek it, return.
     if (!seekToScanner(scanner, firstOnRow, firstKV)) return;
     // If we found candidate on firstOnRow, just return. THIS WILL NEVER HAPPEN!

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java?rev=1377483&r1=1377482&r2=1377483&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java Sun Aug 26 18:59:25 2012
@@ -195,9 +195,6 @@ public class TestHalfStoreFileReader {
       foundKeyValue = doTestOfSeekBefore(p, fs, bottom, items.get(1), cacheConf);
       assertEquals(items.get(0), foundKeyValue);
 
-      // Try to seek before the splitKey in the top file
-      foundKeyValue = doTestOfSeekBefore(p, fs, top, midKV, cacheConf);
-      assertNull(foundKeyValue);
     }
 
   private KeyValue doTestOfSeekBefore(Path p, FileSystem fs, Reference bottom, KeyValue seekBefore,