You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ji...@apache.org on 2008/06/26 06:50:55 UTC

svn commit: r671731 - in /hadoop/hbase/trunk/src: java/org/apache/hadoop/hbase/client/HTable.java java/org/apache/hadoop/hbase/regionserver/HRegionServer.java test/org/apache/hadoop/hbase/util/TestMergeTool.java

Author: jimk
Date: Wed Jun 25 21:50:54 2008
New Revision: 671731

URL: http://svn.apache.org/viewvc?rev=671731&view=rev
Log:
HBASE-613   Timestamp-anchored scanning fails to find all records

Three problems:
- HRegionServer.next did not return null if there were no results
- HTable$ClientScanner.next had wrong loop termination
- TestMergeTool did not correctly set fs, hbase.rootdir

Modified:
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/util/TestMergeTool.java

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java?rev=671731&r1=671730&r2=671731&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java Wed Jun 25 21:50:54 2008
@@ -1343,8 +1343,8 @@
       byte [] localStartKey = oldRegion == null? startRow: oldRegion.getEndKey();
 
       if (CLIENT_LOG.isDebugEnabled()) {
-        CLIENT_LOG.debug("Advancing internal scanner to startKey at " +
-          Bytes.toString(localStartKey));
+        CLIENT_LOG.debug("Advancing internal scanner to startKey at '" +
+          Bytes.toString(localStartKey) + "'");
       }
             
       try {
@@ -1387,7 +1387,7 @@
       RowResult values = null;
       do {
         values = getConnection().getRegionServerWithRetries(callable);
-      } while (values != null && values.size() == 0 && nextScanner());
+      } while ((values == null || values.size() == 0) && nextScanner());
 
       if (values != null && values.size() != 0) {
         return values;

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=671731&r1=671730&r2=671731&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Wed Jun 25 21:50:54 2008
@@ -1128,7 +1128,7 @@
         // No data for this row, go get another.
         results.clear();
       }
-      return new RowResult(key.getRow(), values);
+      return values.size() == 0 ? null : new RowResult(key.getRow(), values);
     } catch (IOException e) {
       checkFileSystem();
       throw e;

Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/util/TestMergeTool.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/util/TestMergeTool.java?rev=671731&r1=671730&r2=671731&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/util/TestMergeTool.java (original)
+++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/util/TestMergeTool.java Wed Jun 25 21:50:54 2008
@@ -25,7 +25,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.dfs.MiniDFSCluster;
-import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseTestCase;
 import org.apache.hadoop.hbase.HColumnDescriptor;
@@ -48,7 +47,6 @@
   private HTableDescriptor desc;
   private byte [][][] rows;
   private MiniDFSCluster dfsCluster = null;
-  private FileSystem fs;
   
   /** {@inheritDoc} */
   @Override
@@ -101,13 +99,19 @@
     // Start up dfs
     this.dfsCluster = new MiniDFSCluster(conf, 2, true, (String[])null);
     this.fs = this.dfsCluster.getFileSystem();
-    
+    conf.set("fs.default.name", fs.getUri().toString());
+    Path parentdir = fs.getHomeDirectory();
+    conf.set(HConstants.HBASE_DIR, parentdir.toString());
+    fs.mkdirs(parentdir);
+    FSUtils.setVersion(fs, parentdir);
+
     // Note: we must call super.setUp after starting the mini cluster or
     // we will end up with a local file system
     
     super.setUp();
-
     try {
+      // Create root and meta regions
+      createRootAndMetaRegions();
       /*
        * Create the regions we will merge
        */
@@ -123,11 +127,6 @@
           b.put(COLUMN_NAME, new ImmutableBytesWritable(row).get());
           regions[i].batchUpdate(b);
         }
-      }
-      // Create root and meta regions
-      createRootAndMetaRegions();
-      // Insert the regions we created into the meta
-      for(int i = 0; i < regions.length; i++) {
         HRegion.addRegionToMETA(meta, regions[i]);
       }
       // Close root and meta regions