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/20 10:55:15 UTC

svn commit: r756395 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/HStoreKey.java src/java/org/apache/hadoop/hbase/master/HMaster.java

Author: stack
Date: Fri Mar 20 09:55:10 2009
New Revision: 756395

URL: http://svn.apache.org/viewvc?rev=756395&view=rev
Log:
HBASE-1277, HBASE-1275 HStoreKey: Wrong comparator logic & TestTable.testCreateTable broken

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HStoreKey.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=756395&r1=756394&r2=756395&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Fri Mar 20 09:55:10 2009
@@ -53,6 +53,8 @@
    HBASE-1268  ZooKeeper config parsing can break HBase startup
                (Nitay Joffe via Stack)
    HBASE-1270  Fix TestInfoServers (Nitay Joffe via Stack)
+   HBASE-1277  HStoreKey: Wrong comparator logic (Evgeny Ryabitskiy)
+   HBASE-1275  TestTable.testCreateTable broken (Ryan Rawson via Stack)
 
   IMPROVEMENTS
    HBASE-1089  Add count of regions on filesystem to master UI; add percentage

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HStoreKey.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HStoreKey.java?rev=756395&r1=756394&r2=756395&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HStoreKey.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HStoreKey.java Fri Mar 20 09:55:10 2009
@@ -803,8 +803,7 @@
         return result;
       }
       result = left.getColumn() == null && right.getColumn() == null? 0:
-        left.getColumn() == null && right.getColumn() != null? -1:
-          left.getColumn() != null && right.getColumn() == null? 1:
+        left.getColumn() == null ? -1:right.getColumn() == null? 1:
             Bytes.compareTo(left.getColumn(), right.getColumn());
       if (result != 0) {
         return result;
@@ -818,7 +817,7 @@
       } else if (left.getTimestamp() > right.getTimestamp()) {
         result = -1;
       }
-      return 0; // are equal
+      return result; // are equal
     }
 
     protected int compareRows(final byte [] left, final int loffset,

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java?rev=756395&r1=756394&r2=756395&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java Fri Mar 20 09:55:10 2009
@@ -641,7 +641,7 @@
 
   private synchronized void createTable(final HRegionInfo newRegion) 
   throws IOException {
-    byte [] tableName = newRegion.getTableDesc().getName();
+    String tableName = newRegion.getTableDesc().getNameAsString();
     // 1. Check to see if table already exists. Get meta region where
     // table would sit should it exist. Open scanner on it. If a region
     // for the table we want to create already exists, then table already
@@ -650,15 +650,16 @@
         
     byte [] metaRegionName = m.getRegionName();
     HRegionInterface srvr = connection.getHRegionConnection(m.getServer());
+    byte[] firstRowInTable = Bytes.toBytes(tableName + ",,");
     long scannerid = srvr.openScanner(metaRegionName, COL_REGIONINFO_ARRAY,
-      tableName, LATEST_TIMESTAMP, null);
+        firstRowInTable, LATEST_TIMESTAMP, null);
     try {
       RowResult data = srvr.next(scannerid);
       if (data != null && data.size() > 0) {
         HRegionInfo info = Writables.getHRegionInfo(data.get(COL_REGIONINFO));
-        if (Bytes.equals(info.getTableDesc().getName(), tableName)) {
+        if (info.getTableDesc().getNameAsString().equals(tableName)) {
           // A region for this table already exists. Ergo table exists.
-          throw new TableExistsException(Bytes.toString(tableName));
+          throw new TableExistsException(tableName);
         }
       }
     } finally {
@@ -710,13 +711,14 @@
     List<Pair<HRegionInfo,HServerAddress>> result =
         new ArrayList<Pair<HRegionInfo,HServerAddress>>();
     Set<MetaRegion> regions = regionManager.getMetaRegionsForTable(tableName);
+    byte [] firstRowInTable = Bytes.toBytes(Bytes.toString(tableName) + ",,");
     for (MetaRegion m: regions) {
       byte [] metaRegionName = m.getRegionName();
       HRegionInterface srvr = connection.getHRegionConnection(m.getServer());
       long scannerid = 
         srvr.openScanner(metaRegionName, 
           new byte[][] {COL_REGIONINFO, COL_SERVER},
-          tableName, 
+          firstRowInTable, 
           LATEST_TIMESTAMP, 
           null);
       try {
@@ -748,12 +750,13 @@
     throws IOException {
     Set<MetaRegion> regions = regionManager.getMetaRegionsForTable(tableName);
     for (MetaRegion m: regions) {
+      byte [] firstRowInTable = Bytes.toBytes(Bytes.toString(tableName) + ",,");
       byte [] metaRegionName = m.getRegionName();
       HRegionInterface srvr = connection.getHRegionConnection(m.getServer());
       long scannerid = 
           srvr.openScanner(metaRegionName, 
             new byte[][] {COL_REGIONINFO, COL_SERVER},
-            tableName, 
+            firstRowInTable, 
             LATEST_TIMESTAMP, 
             null);
       try {