Repository: hbase
Updated Branches:
  refs/heads/master ba402b1e7 -> 8e8e1e5a1


HBASE-19844 Shell should support to flush by regionserver

Signed-off-by: tedyu <yuzhih...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/8e8e1e5a
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/8e8e1e5a
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/8e8e1e5a

Branch: refs/heads/master
Commit: 8e8e1e5a1bbb240a6f4a71bc8b0271d31da633b3
Parents: ba402b1
Author: Reid Chan <reidddc...@outlook.com>
Authored: Tue Feb 13 14:32:16 2018 +0800
Committer: tedyu <yuzhih...@gmail.com>
Committed: Tue Feb 13 08:20:54 2018 -0800

----------------------------------------------------------------------
 hbase-shell/src/main/ruby/hbase/admin.rb        | 21 +++++++++++++++-----
 .../src/main/ruby/shell/commands/flush.rb       |  5 ++++-
 hbase-shell/src/test/ruby/hbase/admin_test.rb   |  4 ++++
 3 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/8e8e1e5a/hbase-shell/src/main/ruby/hbase/admin.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb 
b/hbase-shell/src/main/ruby/hbase/admin.rb
index 0102118..f524380 100644
--- a/hbase-shell/src/main/ruby/hbase/admin.rb
+++ b/hbase-shell/src/main/ruby/hbase/admin.rb
@@ -50,12 +50,17 @@ module Hbase
     end
 
     
#----------------------------------------------------------------------------------------------
-    # Requests a table or region flush
-    def flush(table_or_region_name)
-      @admin.flushRegion(table_or_region_name.to_java_bytes)
-    rescue java.lang.IllegalArgumentException => e
+    # Requests a table or region or region server flush
+    def flush(name)
+      @admin.flushRegion(name.to_java_bytes)
+    rescue java.lang.IllegalArgumentException
       # Unknown region. Try table.
-      @admin.flush(TableName.valueOf(table_or_region_name))
+      begin
+        @admin.flush(TableName.valueOf(name))
+      rescue java.lang.IllegalArgumentException
+        # Unknown table. Try region server.
+        @admin.flushRegionServer(ServerName.valueOf(name))
+      end
     end
 
     
#----------------------------------------------------------------------------------------------
@@ -1286,5 +1291,11 @@ module Hbase
       end
       @admin.clearDeadServers(servers).to_a
     end
+
+    
#----------------------------------------------------------------------------------------------
+    # List live region servers
+    def list_liveservers
+      @admin.getClusterStatus.getServers.to_a
+    end
   end
 end

http://git-wip-us.apache.org/repos/asf/hbase/blob/8e8e1e5a/hbase-shell/src/main/ruby/shell/commands/flush.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell/commands/flush.rb 
b/hbase-shell/src/main/ruby/shell/commands/flush.rb
index 4165b84..1f6b310 100644
--- a/hbase-shell/src/main/ruby/shell/commands/flush.rb
+++ b/hbase-shell/src/main/ruby/shell/commands/flush.rb
@@ -23,11 +23,14 @@ module Shell
       def help
         <<-EOF
 Flush all regions in passed table or pass a region row to
-flush an individual region.  For example:
+flush an individual region or a region server name whose format
+is 'host,port,startcode', to flush all its regions.
+For example:
 
   hbase> flush 'TABLENAME'
   hbase> flush 'REGIONNAME'
   hbase> flush 'ENCODED_REGIONNAME'
+  hbase> flush 'REGION_SERVER_NAME'
 EOF
       end
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/8e8e1e5a/hbase-shell/src/test/ruby/hbase/admin_test.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/hbase/admin_test.rb 
b/hbase-shell/src/test/ruby/hbase/admin_test.rb
index cbeb8b6..929484c 100644
--- a/hbase-shell/src/test/ruby/hbase/admin_test.rb
+++ b/hbase-shell/src/test/ruby/hbase/admin_test.rb
@@ -101,6 +101,10 @@ module Hbase
 
     define_test "flush should work" do
       command(:flush, 'hbase:meta')
+      servers = admin.list_liveservers
+      servers.each do |s|
+        command(:flush, s.toString)
+      end
     end
 
     
#-------------------------------------------------------------------------------

Reply via email to