You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/01/11 20:03:55 UTC

svn commit: r1057799 - in /hbase/trunk/src/main: java/org/apache/hadoop/hbase/client/HBaseAdmin.java java/org/apache/hadoop/hbase/regionserver/Store.java ruby/hbase/admin.rb ruby/shell/commands/split.rb

Author: nspiegelberg
Date: Tue Jan 11 19:03:54 2011
New Revision: 1057799

URL: http://svn.apache.org/viewvc?rev=1057799&view=rev
Log:
HBASE-3437 : Support Explict Split Points from the Shell

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
    hbase/trunk/src/main/ruby/hbase/admin.rb
    hbase/trunk/src/main/ruby/shell/commands/split.rb

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java Tue Jan 11 19:03:54 2011
@@ -1059,6 +1059,11 @@ public class HBaseAdmin implements Abort
     split(tableNameOrRegionName, null);
   }
 
+  public void split(final String tableNameOrRegionName,
+    final String splitPoint) throws IOException, InterruptedException {
+    split(Bytes.toBytes(tableNameOrRegionName), Bytes.toBytes(splitPoint));
+  }
+
   /**
    * Split a table or an individual region.
    * Asynchronous operation.

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java Tue Jan 11 19:03:54 2011
@@ -1319,12 +1319,11 @@ public class Store implements HeapSize {
   StoreSize checkSplit(final boolean force) {
     this.lock.readLock().lock();
     try {
-      // Iterate through all store files
-      if (this.storefiles.isEmpty()) {
-        return null;
-      }
-      if (!force && (storeSize < this.desiredMaxFileSize)) {
-        return null;
+      // sanity checks
+      if (!force) {
+        if (storeSize < this.desiredMaxFileSize || this.storefiles.isEmpty()) {
+          return null;
+        }
       }
 
       if (this.region.getRegionInfo().isMetaRegion()) {

Modified: hbase/trunk/src/main/ruby/hbase/admin.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/ruby/hbase/admin.rb?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/ruby/hbase/admin.rb (original)
+++ hbase/trunk/src/main/ruby/hbase/admin.rb Tue Jan 11 19:03:54 2011
@@ -61,8 +61,12 @@ module Hbase
 
     #----------------------------------------------------------------------------------------------
     # Requests a table or region split
-    def split(table_or_region_name)
-      @admin.split(table_or_region_name)
+    def split(table_or_region_name, split_point)
+      if split_point == nil
+        @admin.split(table_or_region_name)
+      else
+        @admin.split(table_or_region_name, split_point)
+      end
     end
 
     #----------------------------------------------------------------------------------------------

Modified: hbase/trunk/src/main/ruby/shell/commands/split.rb
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/ruby/shell/commands/split.rb?rev=1057799&r1=1057798&r2=1057799&view=diff
==============================================================================
--- hbase/trunk/src/main/ruby/shell/commands/split.rb (original)
+++ hbase/trunk/src/main/ruby/shell/commands/split.rb Tue Jan 11 19:03:54 2011
@@ -23,13 +23,19 @@ module Shell
     class Split < Command
       def help
         return <<-EOF
-Split table or pass a region row to split individual region
+Split entire table or pass a region to split individual region.  With the 
+second parameter, you can specify an explicit split key for the region.  
+Examples:
+    split 'tableName'
+    split 'regionName' # format: 'tableName,startKey,id'
+    split 'tableName', 'splitKey'
+    split 'regionName', 'splitKey'
 EOF
       end
 
-      def command(table_or_region_name)
+      def command(table_or_region_name, split_point = nil)
         format_simple_command do
-          admin.split(table_or_region_name)
+          admin.split(table_or_region_name, split_point)
         end
       end
     end