Recently, lots of developments and applications were done and deployed
based on consuming HBase Rest API. For Restful servlet
org.apache.hadoop.hbase.rest.RESTServer (trunk)) on Jetty, we need to
first explicitly start the service (% ./bin/hbase-daemon.sh start rest
-p 8000 ) for application running. Here is a scenario, sometimes, HBase
cluster are stopped/started for maintanence, but rest is a seperated
standalone process, which binds the HBaseAdmin at construction method.
HBase stop/start cause this binding lost for existing rest servlet. Rest
servlet still exist to trying on old bound HBaseAdmin until a long time
duration later with an "Unavailable" caught via an IOException caught in
such as RootResource.
Is there any JIRA discussion on this with some questions like:
- could we pairwise the HBase service with HBase rest service with some
start/stop options? since seems no reason to still keep the rest servlet
process after HBase stopped? When HBase restarts, original rest service
could not resume to bind to the new HBase service via its old HBaseAdmin
So may we stop the rest when hbase stopped, or even if hbase was killed
by acident, restart hbase with rest option could detect the old rest
process, kill it and start to bind a new one?
>From this point of view, application rely on rest api in previous
scenario could immediately detect it when setting up http connection
session instead of wasting a long time to fail back from IOException
with "Unavailable" from rest servlet.
Best Regards, Julian