From 065393b4aa7f4cb7731a28426d3c7a45d472f265 Mon Sep 17 00:00:00 2001 From: Reid Chan Date: Sun, 11 Feb 2018 18:53:04 +0800 Subject: [PATCH] HBASE-19844 Shell should support to flush by regionserver --- hbase-shell/src/main/ruby/hbase/admin.rb | 15 ++++++++++----- hbase-shell/src/main/ruby/shell/commands/flush.rb | 5 ++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb b/hbase-shell/src/main/ruby/hbase/admin.rb index 01021186b1..54b673d155 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(table_or_region_name_or_region_server_name) + @admin.flushRegion(table_or_region_name_or_region_server_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(table_or_region_name_or_region_server_name)) + rescue java.lang.IllegalArgumentException + # Unknown table. Try region server. + @admin.flushRegionServer(ServerName.valueOf(table_or_region_name_or_region_server_name)) + 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