Bigtop
  1. Bigtop
  2. BIGTOP-648

hbase-thrift cannot be started properly

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 0.4.0
    • Fix Version/s: 0.4.0, 0.5.0
    • Component/s: Init scripts
    • Labels:
      None

      Description

      although hbase-master/regionserver/rest all started fine, fail to start hbase-thrift (SLES)

      # service hbase-thrift start
      Starting  (hbase-thrift):                                                                                      done
      starting thrift, logging to /var/log/hbase/hbase-hbase-thrift-pkgtest-sles64-11.out
      
      # service hbase-thrift status
      thrift is not running                                                                                          failed
      # cat /var/log/hbase/hbase-hbase-thrift-pkgtest-sles64-11.out
      Exception in thread "main" java.lang.AssertionError: Exactly one option out of [-hsha, -nonblocking, -threadpool, -threadedselector] has to be specified
      	at org.apache.hadoop.hbase.thrift.ThriftServerRunner$ImplType.setServerImpl(ThriftServerRunner.java:201)
      	at org.apache.hadoop.hbase.thrift.ThriftServer.processOptions(ThriftServer.java:169)
      	at org.apache.hadoop.hbase.thrift.ThriftServer.doMain(ThriftServer.java:85)
      	at org.apache.hadoop.hbase.thrift.ThriftServer.main(ThriftServer.java:192)
      
      

      tried to follow the message to add the option, doesn't work (Centos5)

      # service hbase-thrift start -nonblocking
      starting thrift, logging to /var/log/hbase/hbase-hbase-thrift-pkgtest-centos64-5.mtv.cloudera.com.out
      Exception in thread "main" java.lang.AssertionError: Exactly one option out of [-hsha, -nonblocking, -threadpool, -threadedselector] has to be specified
      	at org.apache.hadoop.hbase.thrift.ThriftServerRunner$ImplType.setServerImpl(ThriftServerRunner.java:201)
      	at org.apache.hadoop.hbase.thrift.ThriftServer.processOptions(ThriftServer.java:169)
      	at org.apache.hadoop.hbase.thrift.ThriftServer.doMain(ThriftServer.java:85)
      	at org.apache.hadoop.hbase.thrift.ThriftServer.main(ThriftServer.java:192)
      

      tried a full restart also (SLES)

      # service hbase-thrift --full-restart
      Stopping  (hbase-thrift):                                                                                      done
      no thrift to stop because kill -0 of pid 9010 failed with status 1
      
      Starting  (hbase-thrift):                                                                                      done
      starting thrift, logging to /var/log/hbase/hbase-hbase-thrift-pkgtest-sles64-11.out
      Exception in thread "main" 
      # service hbase-thrift status
      thrift is not running                                                                                          failed
      
      1. BIGTOP-648.patch.txt
        1 kB
        Roman Shaposhnik
      2. BIGTOP-648.patch.txt
        0.6 kB
        Roman Shaposhnik

        Issue Links

          Activity

          Hide
          Roman Shaposhnik added a comment -

          You're absolutely correct. I've been meaning to do that, but got distracted. Fixed now.

          Show
          Roman Shaposhnik added a comment - You're absolutely correct. I've been meaning to do that, but got distracted. Fixed now.
          Hide
          Bruno Mahé added a comment -

          The patch was applied to branch-0.4 but not trunk. And from the look of the patch, it seems like it should also be in trunk.

          Show
          Bruno Mahé added a comment - The patch was applied to branch-0.4 but not trunk. And from the look of the patch, it seems like it should also be in trunk.
          Hide
          Andrew Bayer added a comment -

          +1

          Show
          Andrew Bayer added a comment - +1
          Hide
          Johnny Zhang added a comment -

          it does work for centos5_x64 and ubuntu precise I tested, but not SLES 11

          service hbase-thrift start
          __EOT__
          12/07/03 11:14:14 TRACE shell.Shell:
          <stdout>
          Starting  (hbase-thrift): ..done
          starting thrift, logging to /var/log/hbase/hbase-hbase-thrift-pkgtest-sles64-11.out
          Exception in thread "main" java.lang.AssertionError: Exactly one option out of [-hsha, -nonblocking, -threadpool, -threadedselector] has to be specified
                  at org.apache.hadoop.hbase.thrift.ThriftServerRunner$ImplType.setServerImpl(ThriftServerRunner.java:201)
                  at org.apache.hadoop.hbase.thrift.ThriftServer.processOptions(ThriftServer.java:169)
                  at org.apache.hadoop.hbase.thrift.ThriftServer.doMain(ThriftServer.java:85)
                  at org.apache.hadoop.hbase.thrift.ThriftServer.main(ThriftServer.java:192)
          
          </stdout>
          12/07/03 11:14:17 TRACE shell.Shell: /bin/bash -s << __EOT__
          service hbase-thrift status
          __EOT__
          12/07/03 11:14:17 TRACE shell.Shell: return: 3
          12/07/03 11:14:17 TRACE shell.Shell:
          <stdout>
          thrift is not running..failed
          

          sorry for late notice

          Show
          Johnny Zhang added a comment - it does work for centos5_x64 and ubuntu precise I tested, but not SLES 11 service hbase-thrift start __EOT__ 12/07/03 11:14:14 TRACE shell.Shell: <stdout> Starting (hbase-thrift): ..done starting thrift, logging to /var/log/hbase/hbase-hbase-thrift-pkgtest-sles64-11.out Exception in thread "main" java.lang.AssertionError: Exactly one option out of [-hsha, -nonblocking, -threadpool, -threadedselector] has to be specified at org.apache.hadoop.hbase.thrift.ThriftServerRunner$ImplType.setServerImpl(ThriftServerRunner.java:201) at org.apache.hadoop.hbase.thrift.ThriftServer.processOptions(ThriftServer.java:169) at org.apache.hadoop.hbase.thrift.ThriftServer.doMain(ThriftServer.java:85) at org.apache.hadoop.hbase.thrift.ThriftServer.main(ThriftServer.java:192) </stdout> 12/07/03 11:14:17 TRACE shell.Shell: /bin/bash -s << __EOT__ service hbase-thrift status __EOT__ 12/07/03 11:14:17 TRACE shell.Shell: return: 3 12/07/03 11:14:17 TRACE shell.Shell: <stdout> thrift is not running..failed sorry for late notice
          Hide
          Bruno Mahé added a comment -

          +1

          Show
          Bruno Mahé added a comment - +1
          Hide
          Roman Shaposhnik added a comment -

          I know this is a total hack, but:

          1. I can't come up with a better way to do it for Bigtop 0.4.0 and
          2. I really would like it to work out of the box AND
          3. with HBASE-6263 fixed we will immediateally rip those hacks out

          So with that in mind – please let me know what do you think.

          Show
          Roman Shaposhnik added a comment - I know this is a total hack, but: I can't come up with a better way to do it for Bigtop 0.4.0 and I really would like it to work out of the box AND with HBASE-6263 fixed we will immediateally rip those hacks out So with that in mind – please let me know what do you think.
          Hide
          Andrew Purtell added a comment -
          Show
          Andrew Purtell added a comment - See HBASE-6263
          Hide
          Bruno Mahé added a comment -

          Another alternative would be to use the /etc/default/ as usual so as to have a consistent path until it gets fixed in a future release of Apache HBase.

          Show
          Bruno Mahé added a comment - Another alternative would be to use the /etc/default/ as usual so as to have a consistent path until it gets fixed in a future release of Apache HBase.
          Hide
          Andrew Purtell added a comment -

          For CentOS, it might make sense to add /etc/sysconfig/hbase-thrift, containing

          MODE=nonblocking

          and special case the generation of /etc/init.d/hbase-thrift to substitute $MODE. And the Debian equivalent.

          We could also make the HBase binscript assume a default, but this won't allow choice.

          Show
          Andrew Purtell added a comment - For CentOS, it might make sense to add /etc/sysconfig/hbase-thrift, containing MODE=nonblocking and special case the generation of /etc/init.d/hbase-thrift to substitute $MODE. And the Debian equivalent. We could also make the HBase binscript assume a default, but this won't allow choice.
          Hide
          Bruno Mahé added a comment - - edited

          This is not going to work at all.
          Deployment/configuration management tools only use one argument (start/stop/status) and do not expect any additional arguments. Forcing additional arguments will force people to implement hacks and workaround for this non-standard behavior.
          Furthermore this is against the LSB. See http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html

          Conforming applications which need to execute commands on changes to the system run level (including boot and shutdown), may install one or more init scripts. Init scripts provided by conforming applications shall accept a single argument which selects the action:

          start start the service
          stop stop the service
          restart stop and restart the service if the service is already running, otherwise start the service
          try-restart restart the service if the service is already running
          reload cause the configuration of the service to be reloaded without actually stopping and restarting the service
          force-reload cause the configuration to be reloaded if the service supports this, otherwise restart the service if it is running
          status print the current status of the service

          There is no reason to force people to pass additional arguments.
          HBase should be fixed so that argument can be made a configuration option.

          Show
          Bruno Mahé added a comment - - edited This is not going to work at all. Deployment/configuration management tools only use one argument (start/stop/status) and do not expect any additional arguments. Forcing additional arguments will force people to implement hacks and workaround for this non-standard behavior. Furthermore this is against the LSB. See http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html Conforming applications which need to execute commands on changes to the system run level (including boot and shutdown), may install one or more init scripts. Init scripts provided by conforming applications shall accept a single argument which selects the action: start start the service stop stop the service restart stop and restart the service if the service is already running, otherwise start the service try-restart restart the service if the service is already running reload cause the configuration of the service to be reloaded without actually stopping and restarting the service force-reload cause the configuration to be reloaded if the service supports this, otherwise restart the service if it is running status print the current status of the service There is no reason to force people to pass additional arguments. HBase should be fixed so that argument can be made a configuration option.

            People

            • Assignee:
              Roman Shaposhnik
              Reporter:
              Johnny Zhang
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development