You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2018/04/06 18:17:39 UTC
[1/2] hbase git commit: HBASE-20276 restore original shell REPL
functionality where commands can return results
Repository: hbase
Updated Branches:
refs/heads/branch-1 2f683cd43 -> b9ca1cc15
refs/heads/branch-1.4 382c5f079 -> cd9407d94
HBASE-20276 restore original shell REPL functionality where commands can return results
* makes commands always pass any results back to hirb
* print warning if hirb is given the --return-values flag
* add some docs on how to avoid the console clutter that HBASE-15965 sought to address
* add an upgrade section note about this change.
* cleanup where the get_splits command does its printing so there's a building block that doesn't print
* some rubocop suggested tweaks and opt-out for classlength check on table and shell classes.
Signed-off-by: Mike Drob <md...@apache.org>
Conflicts:
src/main/asciidoc/_chapters/upgrading.adoc
* backport leaves off refguide change about upgrading.
Conflicts:
hbase-shell/src/main/ruby/hbase/table.rb
hbase-shell/src/main/ruby/shell/commands/get_splits.rb
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b9ca1cc1
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b9ca1cc1
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b9ca1cc1
Branch: refs/heads/branch-1
Commit: b9ca1cc152620e035b8abf727ce59cb4cf45901f
Parents: 2f683cd
Author: Sean Busbey <bu...@apache.org>
Authored: Wed Apr 4 09:37:27 2018 -0500
Committer: Sean Busbey <bu...@apache.org>
Committed: Fri Apr 6 13:15:56 2018 -0500
----------------------------------------------------------------------
bin/hirb.rb | 8 +++-----
hbase-shell/src/main/ruby/hbase/table.rb | 12 ++++++++----
hbase-shell/src/main/ruby/shell.rb | 14 ++++----------
.../src/main/ruby/shell/commands/get_splits.rb | 7 +++++--
.../src/test/ruby/shell/noninteractive_test.rb | 2 +-
hbase-shell/src/test/ruby/test_helper.rb | 2 +-
src/main/asciidoc/_chapters/shell.adoc | 8 ++++++++
7 files changed, 30 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/bin/hirb.rb
----------------------------------------------------------------------
diff --git a/bin/hirb.rb b/bin/hirb.rb
index 984cfe2..04097b4 100644
--- a/bin/hirb.rb
+++ b/bin/hirb.rb
@@ -59,15 +59,12 @@ Usage: shell [OPTIONS] [SCRIPTFILE [ARGUMENTS]]
-n | --noninteractive Do not run within an IRB session
and exit with non-zero status on
first error.
- -r | --return-values Include return values from commands
- executed in the shell.
HERE
found = []
script2run = nil
log_level = org.apache.log4j.Level::ERROR
@shell_debug = false
interactive = true
-return_values = false
for arg in ARGV
if arg == '-h' || arg == '--help'
puts cmdline_help
@@ -82,7 +79,8 @@ for arg in ARGV
interactive = false
found.push(arg)
elsif arg == '-r' || arg == '--return-values'
- return_values = true
+ warn '[INFO] the -r | --return-values option is ignored. we always behave '\
+ 'as though it was given.'
found.push(arg)
else
# Presume it a script. Save it off for running later below
@@ -118,7 +116,7 @@ require 'shell/formatter'
@hbase = Hbase::Hbase.new
# Setup console
-@shell = Shell::Shell.new(@hbase, interactive, return_values)
+@shell = Shell::Shell.new(@hbase, interactive)
@shell.debug = @shell_debug
# Add commands to this namespace
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/hbase-shell/src/main/ruby/hbase/table.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/hbase/table.rb b/hbase-shell/src/main/ruby/hbase/table.rb
index 37e4d63..3e3fb8e 100644
--- a/hbase-shell/src/main/ruby/hbase/table.rb
+++ b/hbase-shell/src/main/ruby/hbase/table.rb
@@ -19,9 +19,12 @@
include Java
+java_import org.apache.hadoop.hbase.util.Bytes
+
# Wrapper for org.apache.hadoop.hbase.client.Table
module Hbase
+ # rubocop:disable Metrics/ClassLength
class Table
include HBaseConstants
@@ -717,11 +720,12 @@ EOF
# Get the split points for the table
def _get_splits_internal()
locator = @table.getRegionLocator()
- splits = locator.getAllRegionLocations().
- map{|i| Bytes.toStringBinary(i.getRegionInfo().getStartKey)}.delete_if{|k| k == ""}
+ locator.getAllRegionLocations()
+ .map { |i| Bytes.toStringBinary(i.getRegionInfo().getStartKey) }
+ .delete_if { |k| k == "" }
+ ensure
locator.close()
- puts("Total number of splits = %s" % [splits.size + 1])
- return splits
end
end
+ # rubocop:enable Metrics/ClassLength
end
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/hbase-shell/src/main/ruby/shell.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell.rb b/hbase-shell/src/main/ruby/shell.rb
index 99ba768..a6b5b4f 100644
--- a/hbase-shell/src/main/ruby/shell.rb
+++ b/hbase-shell/src/main/ruby/shell.rb
@@ -68,22 +68,18 @@ module Shell
end
#----------------------------------------------------------------------
+ # rubocop:disable Metrics/ClassLength
class Shell
attr_accessor :hbase
attr_accessor :interactive
- attr_accessor :return_values
alias interactive? interactive
- alias return_values? return_values
@debug = false
attr_accessor :debug
- def initialize(hbase, interactive = true, return_values = !interactive)
+ def initialize(hbase, interactive = true)
self.hbase = hbase
self.interactive = interactive
- self.return_values = return_values
- # If we're in non-interactive mode, force return_values
- self.return_values = true unless self.interactive
end
def hbase_admin
@@ -139,11 +135,8 @@ module Shell
end
# call the method 'command' on the specified command
- # If return_values is false, then we suppress the return value. The command
- # should have printed relevant output.
def command(command, *args)
- ret = internal_command(command, :command, *args)
- ret if return_values
+ internal_command(command, :command, *args)
end
# call a specific internal method in the command instance
@@ -244,6 +237,7 @@ For more on the HBase Shell, see http://hbase.apache.org/book.html
HERE
end
end
+ # rubocop:enable Metrics/ClassLength
end
# Load commands base class
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell/commands/get_splits.rb b/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
index 8b6ae82..26be15f 100644
--- a/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
+++ b/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
@@ -37,10 +37,13 @@ EOF
end
def get_splits(table)
- table._get_splits_internal()
+ splits = table._get_splits_internal()
+ puts(format('Total number of splits = %<numsplits>d',
+ numsplits: (splits.size + 1)))
+ splits
end
end
end
end
-::Hbase::Table.add_shell_command("get_splits")
\ No newline at end of file
+::Hbase::Table.add_shell_command("get_splits")
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
index 4fcdee2..65c0dad 100644
--- a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
+++ b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
@@ -20,7 +20,7 @@ require 'shell'
class NonInteractiveTest < Test::Unit::TestCase
def setup
@hbase = ::Hbase::Hbase.new($TEST_CLUSTER.getConfiguration)
- @shell = Shell::Shell.new(@hbase, false, true)
+ @shell = Shell::Shell.new(@hbase, false)
end
define_test "Shell::Shell noninteractive mode should throw" do
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/hbase-shell/src/test/ruby/test_helper.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/test_helper.rb b/hbase-shell/src/test/ruby/test_helper.rb
index 8dca199..b4bec90 100644
--- a/hbase-shell/src/test/ruby/test_helper.rb
+++ b/hbase-shell/src/test/ruby/test_helper.rb
@@ -43,7 +43,7 @@ module Hbase
def setup_hbase
hbase = ::Hbase::Hbase.new($TEST_CLUSTER.getConfiguration)
- @shell = ::Shell::Shell.new(hbase, interactive = false, return_values = true)
+ @shell = ::Shell::Shell.new(hbase, interactive = false)
end
def shutdown
http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ca1cc1/src/main/asciidoc/_chapters/shell.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/_chapters/shell.adoc b/src/main/asciidoc/_chapters/shell.adoc
index 237089e..000cb4e 100644
--- a/src/main/asciidoc/_chapters/shell.adoc
+++ b/src/main/asciidoc/_chapters/shell.adoc
@@ -318,6 +318,7 @@ hbase(main):017:0> tables.map { |t| disable t ; drop t}
hbase(main):018:0>
----
+[[irbrc]]
=== _irbrc_
Create an _.irbrc_ file for yourself in your home directory.
@@ -331,6 +332,13 @@ IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
----
+If you'd like to avoid printing the result of evaluting each expression to stderr, for example the array of tables returned from the "list" command:
+
+[source,bash]
+----
+$ echo "IRB.conf[:ECHO] = false" >>~/.irbrc
+----
+
See the `ruby` documentation of _.irbrc_ to learn about other possible configurations.
=== LOG data to timestamp
[2/2] hbase git commit: HBASE-20276 restore original shell REPL
functionality where commands can return results
Posted by bu...@apache.org.
HBASE-20276 restore original shell REPL functionality where commands can return results
* makes commands always pass any results back to hirb
* print warning if hirb is given the --return-values flag
* add some docs on how to avoid the console clutter that HBASE-15965 sought to address
* add an upgrade section note about this change.
* cleanup where the get_splits command does its printing so there's a building block that doesn't print
* some rubocop suggested tweaks and opt-out for classlength check on table and shell classes.
Signed-off-by: Mike Drob <md...@apache.org>
Conflicts:
src/main/asciidoc/_chapters/upgrading.adoc
* backport leaves off refguide change about upgrading.
Conflicts:
hbase-shell/src/main/ruby/hbase/table.rb
hbase-shell/src/main/ruby/shell/commands/get_splits.rb
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/cd9407d9
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/cd9407d9
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/cd9407d9
Branch: refs/heads/branch-1.4
Commit: cd9407d9488d474ad8b583b04f24ace54c642afc
Parents: 382c5f0
Author: Sean Busbey <bu...@apache.org>
Authored: Wed Apr 4 09:37:27 2018 -0500
Committer: Sean Busbey <bu...@apache.org>
Committed: Fri Apr 6 13:17:12 2018 -0500
----------------------------------------------------------------------
bin/hirb.rb | 8 +++-----
hbase-shell/src/main/ruby/hbase/table.rb | 12 ++++++++----
hbase-shell/src/main/ruby/shell.rb | 14 ++++----------
.../src/main/ruby/shell/commands/get_splits.rb | 7 +++++--
.../src/test/ruby/shell/noninteractive_test.rb | 2 +-
hbase-shell/src/test/ruby/test_helper.rb | 2 +-
src/main/asciidoc/_chapters/shell.adoc | 8 ++++++++
7 files changed, 30 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/bin/hirb.rb
----------------------------------------------------------------------
diff --git a/bin/hirb.rb b/bin/hirb.rb
index 984cfe2..04097b4 100644
--- a/bin/hirb.rb
+++ b/bin/hirb.rb
@@ -59,15 +59,12 @@ Usage: shell [OPTIONS] [SCRIPTFILE [ARGUMENTS]]
-n | --noninteractive Do not run within an IRB session
and exit with non-zero status on
first error.
- -r | --return-values Include return values from commands
- executed in the shell.
HERE
found = []
script2run = nil
log_level = org.apache.log4j.Level::ERROR
@shell_debug = false
interactive = true
-return_values = false
for arg in ARGV
if arg == '-h' || arg == '--help'
puts cmdline_help
@@ -82,7 +79,8 @@ for arg in ARGV
interactive = false
found.push(arg)
elsif arg == '-r' || arg == '--return-values'
- return_values = true
+ warn '[INFO] the -r | --return-values option is ignored. we always behave '\
+ 'as though it was given.'
found.push(arg)
else
# Presume it a script. Save it off for running later below
@@ -118,7 +116,7 @@ require 'shell/formatter'
@hbase = Hbase::Hbase.new
# Setup console
-@shell = Shell::Shell.new(@hbase, interactive, return_values)
+@shell = Shell::Shell.new(@hbase, interactive)
@shell.debug = @shell_debug
# Add commands to this namespace
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/hbase-shell/src/main/ruby/hbase/table.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/hbase/table.rb b/hbase-shell/src/main/ruby/hbase/table.rb
index 37e4d63..3e3fb8e 100644
--- a/hbase-shell/src/main/ruby/hbase/table.rb
+++ b/hbase-shell/src/main/ruby/hbase/table.rb
@@ -19,9 +19,12 @@
include Java
+java_import org.apache.hadoop.hbase.util.Bytes
+
# Wrapper for org.apache.hadoop.hbase.client.Table
module Hbase
+ # rubocop:disable Metrics/ClassLength
class Table
include HBaseConstants
@@ -717,11 +720,12 @@ EOF
# Get the split points for the table
def _get_splits_internal()
locator = @table.getRegionLocator()
- splits = locator.getAllRegionLocations().
- map{|i| Bytes.toStringBinary(i.getRegionInfo().getStartKey)}.delete_if{|k| k == ""}
+ locator.getAllRegionLocations()
+ .map { |i| Bytes.toStringBinary(i.getRegionInfo().getStartKey) }
+ .delete_if { |k| k == "" }
+ ensure
locator.close()
- puts("Total number of splits = %s" % [splits.size + 1])
- return splits
end
end
+ # rubocop:enable Metrics/ClassLength
end
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/hbase-shell/src/main/ruby/shell.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell.rb b/hbase-shell/src/main/ruby/shell.rb
index 99ba768..a6b5b4f 100644
--- a/hbase-shell/src/main/ruby/shell.rb
+++ b/hbase-shell/src/main/ruby/shell.rb
@@ -68,22 +68,18 @@ module Shell
end
#----------------------------------------------------------------------
+ # rubocop:disable Metrics/ClassLength
class Shell
attr_accessor :hbase
attr_accessor :interactive
- attr_accessor :return_values
alias interactive? interactive
- alias return_values? return_values
@debug = false
attr_accessor :debug
- def initialize(hbase, interactive = true, return_values = !interactive)
+ def initialize(hbase, interactive = true)
self.hbase = hbase
self.interactive = interactive
- self.return_values = return_values
- # If we're in non-interactive mode, force return_values
- self.return_values = true unless self.interactive
end
def hbase_admin
@@ -139,11 +135,8 @@ module Shell
end
# call the method 'command' on the specified command
- # If return_values is false, then we suppress the return value. The command
- # should have printed relevant output.
def command(command, *args)
- ret = internal_command(command, :command, *args)
- ret if return_values
+ internal_command(command, :command, *args)
end
# call a specific internal method in the command instance
@@ -244,6 +237,7 @@ For more on the HBase Shell, see http://hbase.apache.org/book.html
HERE
end
end
+ # rubocop:enable Metrics/ClassLength
end
# Load commands base class
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell/commands/get_splits.rb b/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
index 8b6ae82..26be15f 100644
--- a/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
+++ b/hbase-shell/src/main/ruby/shell/commands/get_splits.rb
@@ -37,10 +37,13 @@ EOF
end
def get_splits(table)
- table._get_splits_internal()
+ splits = table._get_splits_internal()
+ puts(format('Total number of splits = %<numsplits>d',
+ numsplits: (splits.size + 1)))
+ splits
end
end
end
end
-::Hbase::Table.add_shell_command("get_splits")
\ No newline at end of file
+::Hbase::Table.add_shell_command("get_splits")
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
index 4fcdee2..65c0dad 100644
--- a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
+++ b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
@@ -20,7 +20,7 @@ require 'shell'
class NonInteractiveTest < Test::Unit::TestCase
def setup
@hbase = ::Hbase::Hbase.new($TEST_CLUSTER.getConfiguration)
- @shell = Shell::Shell.new(@hbase, false, true)
+ @shell = Shell::Shell.new(@hbase, false)
end
define_test "Shell::Shell noninteractive mode should throw" do
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/hbase-shell/src/test/ruby/test_helper.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/test_helper.rb b/hbase-shell/src/test/ruby/test_helper.rb
index 8dca199..b4bec90 100644
--- a/hbase-shell/src/test/ruby/test_helper.rb
+++ b/hbase-shell/src/test/ruby/test_helper.rb
@@ -43,7 +43,7 @@ module Hbase
def setup_hbase
hbase = ::Hbase::Hbase.new($TEST_CLUSTER.getConfiguration)
- @shell = ::Shell::Shell.new(hbase, interactive = false, return_values = true)
+ @shell = ::Shell::Shell.new(hbase, interactive = false)
end
def shutdown
http://git-wip-us.apache.org/repos/asf/hbase/blob/cd9407d9/src/main/asciidoc/_chapters/shell.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/_chapters/shell.adoc b/src/main/asciidoc/_chapters/shell.adoc
index 237089e..000cb4e 100644
--- a/src/main/asciidoc/_chapters/shell.adoc
+++ b/src/main/asciidoc/_chapters/shell.adoc
@@ -318,6 +318,7 @@ hbase(main):017:0> tables.map { |t| disable t ; drop t}
hbase(main):018:0>
----
+[[irbrc]]
=== _irbrc_
Create an _.irbrc_ file for yourself in your home directory.
@@ -331,6 +332,13 @@ IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
----
+If you'd like to avoid printing the result of evaluting each expression to stderr, for example the array of tables returned from the "list" command:
+
+[source,bash]
+----
+$ echo "IRB.conf[:ECHO] = false" >>~/.irbrc
+----
+
See the `ruby` documentation of _.irbrc_ to learn about other possible configurations.
=== LOG data to timestamp