From 5113e9a2ec493c946e67a1b348c8692c53213a49 Mon Sep 17 00:00:00 2001 From: Reid Chan Date: Sun, 11 Feb 2018 18:01:43 +0800 Subject: [PATCH] HBASE-19844 Shell should support to flush by regionserver --- hbase-shell/src/main/ruby/hbase/admin.rb | 19 +++++++++++++------ hbase-shell/src/main/ruby/shell/commands/flush.rb | 5 ++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb b/hbase-shell/src/main/ruby/hbase/admin.rb index 01021186b1..ac65548716 100644 --- a/hbase-shell/src/main/ruby/hbase/admin.rb +++ b/hbase-shell/src/main/ruby/hbase/admin.rb @@ -50,12 +50,19 @@ 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 - # Unknown region. Try table. - @admin.flush(TableName.valueOf(table_or_region_name)) + # Requests a table or region or region server flush + def flush(table_or_region_name_or_region_server_name) + begin + @admin.flushRegion(table_or_region_name_or_region_server_name.to_java_bytes) + rescue java.lang.IllegalArgumentException => e + # Unknown region. Try table. + begin + @admin.flush(TableName.valueOf(table_or_region_name_or_region_server_name)) + rescue java.lang.IllegalArgumentException => e + # Unknown table. Try region server. + @admin.flushRegionServer(ServerName.valueOf(table_or_region_name_or_region_server_name)) + end + end end #---------------------------------------------------------------------------------------------- diff --git a/hbase-shell/src/main/ruby/shell/commands/flush.rb b/hbase-shell/src/main/ruby/shell/commands/flush.rb index 4165b84e38..1f6b3105a1 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 -- 2.15.0