You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bigtop.apache.org by "Kevin W Monroe (JIRA)" <ji...@apache.org> on 2017/04/18 03:02:41 UTC

[jira] [Created] (BIGTOP-2743) hbase shell does not work on ppc64le

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)