Kevin W Monroe created BIGTOP-2743:
--------------------------------------
Summary: hbase shell does not work on ppc64le
Key: BIGTOP-2743
URL: https://issues.apache.org/jira/browse/BIGTOP-2743
Project: Bigtop
Issue Type: Bug
Components: hbase
Affects Versions: 1.2.0
Reporter: Kevin W Monroe
After upgrading HBase to 1.1.9 in BIGTOP-2740, the HMaster and RegionServer
processes look good on ppc64le. This is a significant improvement, as the
previous version (1.1.3) did not work at all.
However, {{hbase shell}} still fails like this with 1.1.9:
{noformat}
$ hbase shell
OpenJDK 64-Bit Server VM warning: Using incremental CMS is deprecated and will
likely be removed in a future release
include_class is deprecated. Use java_import.
include_class is deprecated. Use java_import.
include_class is deprecated. Use java_import.
NoMethodError: undefined method `getTerminal' for Java::Jline::Terminal:Module
refresh_width at /usr/lib/hbase/lib/ruby/shell/formatter.rb:34
initialize at /usr/lib/hbase/lib/ruby/shell/formatter.rb:48
(root) at /usr/lib/hbase/bin/hirb.rb:116
{noformat}
This stems from an incompatibility in the JLine version that ships with the
updated JRuby lib (which is required for ppc64le). See HBASE-13338 and [jruby
issue|https://github.com/jruby/jruby/issues/2912] for details.
You can work around this by patching {{formatter.rb}}:
{noformat}
--- /usr/lib/hbase/lib/ruby/shell/formatter.rb.old 2017-04-17
23:28:49.339383104 +0000
+++ /usr/lib/hbase/lib/ruby/shell/formatter.rb 2017-04-17 23:30:46.749288423
+0000
@@ -31,8 +31,7 @@
def refresh_width()
require 'readline'
if $stdout.tty?
- @max_width = Java::jline.Terminal.getTerminal().getTerminalWidth()
+ @max_width = 0
{noformat}
It's not ideal, but it's a simple enough workaround for anyone needing hbase
shell on ppc64le.
I'm opening this jira to determine how best to apply this workaround, or where
to document this as a limitation of HBase 1.1.x on ppc64le.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)