From 3427999ff7468070a80db7dd51ea704eaa0a3818 Mon Sep 17 00:00:00 2001 From: Karthik Palanisamy Date: Tue, 8 Oct 2019 03:16:47 -0700 Subject: [PATCH] HBASE-23134 Enable_all and Disable_all table by Regex fail from Shell (#698) Signed-off-by: Duo Zhang --- hbase-shell/src/main/ruby/hbase/admin.rb | 24 ++++++++++++++++--- hbase-shell/src/test/ruby/hbase/admin_test.rb | 16 +++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/hbase-shell/src/main/ruby/hbase/admin.rb b/hbase-shell/src/main/ruby/hbase/admin.rb index ba84893d01a..766b43e0cc6 100644 --- a/hbase-shell/src/main/ruby/hbase/admin.rb +++ b/hbase-shell/src/main/ruby/hbase/admin.rb @@ -308,8 +308,17 @@ module Hbase #---------------------------------------------------------------------------------------------- # Enables all tables matching the given regex def enable_all(regex) - regex = regex.to_s - @admin.enableTables(Pattern.compile(regex)) + pattern = Pattern.compile(regex.to_s) + failed = java.util.ArrayList.new + @admin.listTableNames(pattern).each do |table_name| + begin + @admin.enableTable(table_name) + rescue java.io.IOException => e + puts "table:#{table_name}, error:#{e.toString}" + failed.add(table_name) + end + end + failed end #---------------------------------------------------------------------------------------------- @@ -324,7 +333,16 @@ module Hbase # Disables all tables matching the given regex def disable_all(regex) pattern = Pattern.compile(regex.to_s) - @admin.disableTables(pattern).map { |t| t.getTableName.getNameAsString } + failed = java.util.ArrayList.new + @admin.listTableNames(pattern).each do |table_name| + begin + @admin.disableTable(table_name) + rescue java.io.IOException => e + puts "table:#{table_name}, error:#{e.toString}" + failed.add(table_name) + end + end + failed end #--------------------------------------------------------------------------------------------- diff --git a/hbase-shell/src/test/ruby/hbase/admin_test.rb b/hbase-shell/src/test/ruby/hbase/admin_test.rb index b15449d3ecb..d482a94eca9 100644 --- a/hbase-shell/src/test/ruby/hbase/admin_test.rb +++ b/hbase-shell/src/test/ruby/hbase/admin_test.rb @@ -406,6 +406,22 @@ module Hbase #------------------------------------------------------------------------------- + define_test 'enable and disable tables by regex' do + @t1 = 't1' + @t2 = 't11' + @regex = 't1.*' + command(:create, @t1, 'f') + command(:create, @t2, 'f') + admin.disable_all(@regex) + assert(command(:is_disabled, @t1)) + assert(command(:is_disabled, @t2)) + admin.enable_all(@regex) + assert(command(:is_enabled, @t1)) + assert(command(:is_enabled, @t2)) + end + + #------------------------------------------------------------------------------- + define_test "list_regions should fail for disabled table" do drop_test_table(@create_test_name) admin.create(@create_test_name, 'a')