You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2017/07/21 04:01:11 UTC
hbase git commit: HBASE-18412 [Shell] Support unset of list of
configuration for a table (Yun Zhao)
Repository: hbase
Updated Branches:
refs/heads/master bdc94b1d6 -> af534acab
HBASE-18412 [Shell] Support unset of list of configuration for a table (Yun Zhao)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/af534aca
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/af534aca
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/af534aca
Branch: refs/heads/master
Commit: af534acabb3e0d03e804ff409a09f3b77e17e779
Parents: bdc94b1
Author: tedyu <yu...@gmail.com>
Authored: Thu Jul 20 21:01:05 2017 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Thu Jul 20 21:01:05 2017 -0700
----------------------------------------------------------------------
hbase-shell/src/main/ruby/hbase/admin.rb | 17 +++++++++++
.../src/main/ruby/shell/commands/alter.rb | 4 +++
hbase-shell/src/test/ruby/hbase/admin_test.rb | 30 ++++++++++++++++++++
3 files changed, 51 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/af534aca/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 5eee26c..460ede3 100644
--- a/hbase-shell/src/main/ruby/hbase/admin.rb
+++ b/hbase-shell/src/main/ruby/hbase/admin.rb
@@ -657,6 +657,23 @@ module Hbase
htd.remove(name)
end
hasTableUpdate = true
+ # Unset table configuration
+ elsif method == 'table_conf_unset'
+ raise(ArgumentError, 'NAME parameter missing for table_conf_unset method') unless name
+ if name.is_a?(Array)
+ name.each do |key|
+ if htd.getConfigurationValue(key).nil?
+ raise ArgumentError, "Could not find configuration: #{key}"
+ end
+ htd.removeConfiguration(key)
+ end
+ else
+ if htd.getConfigurationValue(name).nil?
+ raise ArgumentError, "Could not find configuration: #{name}"
+ end
+ htd.removeConfiguration(name)
+ end
+ hasTableUpdate = true
# Unknown method
else
raise ArgumentError, "Unknown method: #{method}"
http://git-wip-us.apache.org/repos/asf/hbase/blob/af534aca/hbase-shell/src/main/ruby/shell/commands/alter.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell/commands/alter.rb b/hbase-shell/src/main/ruby/shell/commands/alter.rb
index 2207111..4aef28c 100644
--- a/hbase-shell/src/main/ruby/shell/commands/alter.rb
+++ b/hbase-shell/src/main/ruby/shell/commands/alter.rb
@@ -71,6 +71,10 @@ You can also set configuration settings specific to this table or column family:
hbase> alter 't1', CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}
hbase> alter 't1', {NAME => 'f2', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}
+You can also unset configuration settings specific to this table:
+
+ hbase> alter 't1', METHOD => 'table_conf_unset', NAME => 'hbase.hregion.majorcompaction'
+
You can also remove a table-scope attribute:
hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
http://git-wip-us.apache.org/repos/asf/hbase/blob/af534aca/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 2a20d34..025b737 100644
--- a/hbase-shell/src/test/ruby/hbase/admin_test.rb
+++ b/hbase-shell/src/test/ruby/hbase/admin_test.rb
@@ -480,6 +480,36 @@ module Hbase
assert_no_match(eval("/" + key_2 + "/"), admin.describe(@test_name))
end
+ define_test "alter should be able to remove a table configuration" do
+ drop_test_table(@test_name)
+ create_test_table(@test_name)
+
+ key = "TestConf"
+ command(:alter, @test_name, CONFIGURATION => {key => 1})
+
+ # eval() is used to convert a string to regex
+ assert_match(eval("/" + key + "/"), admin.describe(@test_name))
+
+ command(:alter, @test_name, 'METHOD' => 'table_conf_unset', 'NAME' => key)
+ assert_no_match(eval("/" + key + "/"), admin.describe(@test_name))
+ end
+
+ define_test "alter should be able to remove a list of table configuration" do
+ drop_test_table(@test_name)
+
+ key_1 = "TestConf1"
+ key_2 = "TestConf2"
+ command(:create, @test_name, { NAME => 'i'}, CONFIGURATION => { key_1 => 1, key_2 => 2 })
+
+ # eval() is used to convert a string to regex
+ assert_match(eval("/" + key_1 + "/"), admin.describe(@test_name))
+ assert_match(eval("/" + key_2 + "/"), admin.describe(@test_name))
+
+ command(:alter, @test_name, 'METHOD' => 'table_conf_unset', 'NAME' => [ key_1, key_2 ])
+ assert_no_match(eval("/" + key_1 + "/"), admin.describe(@test_name))
+ assert_no_match(eval("/" + key_2 + "/"), admin.describe(@test_name))
+ end
+
define_test "get_table should get a real table" do
drop_test_table(@test_name)
create_test_table(@test_name)