You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "ranpanfeng (Jira)" <ji...@apache.org> on 2019/08/25 18:48:00 UTC
[jira] [Created] (HBASE-22918) RegionServer violates failfast fault
assumption
ranpanfeng created HBASE-22918:
----------------------------------
Summary: RegionServer violates failfast fault assumption
Key: HBASE-22918
URL: https://issues.apache.org/jira/browse/HBASE-22918
Project: HBase
Issue Type: Bug
Reporter: ranpanfeng
hbase 2.1.5 is tested and veriflied seriously before it will be deployed in our production environment. we give NP(network partition) fault a very important care. so NP fault injection tests are conducted in our test environment. Some findings are exposed.
I use ycsb to write data into table SYSTEM:test, which resides on regionserver0; during the writting, I use iptables to drop any packet from regionserver0 to zookeeper quorums. after
a default zookeeper.session.out(90'), regionserver0 throws YouAreDeadException after retries to connect to zookeeper on TimeoutException error. then, regionserver0 suicides itself, before regionserver0 invokes completeFile on WAL, the active master already considered regionserver0 has dead pre-maturely, so invokes recoverLease to close the WAL on regionserver0 forcely.
In trusted idc, distributed storage assumes that the error are always failstop/failfast faults, there are no Byzantine failures. so in above scenario, active master should take over the WAL on regionserver0 after regionserver0 is suicided successfully. According to lease protocol, RS
should suicide in a lease period, and active master should take over the WAL
after a grace period has elapsed, and invariant "lease period < grace period" should always hold. in hbase-site.xml, only on config property "zookeeper.session.timeout" is given, I think we should provide two properties:
1. regionserver.zookeeper.session.timeout
2. master.zookeeper.session.timeout
HBase admin then can tune regionserver.zookeeper.session.timeout less than master.zookeeper.session.timeout. In this way, failstop assumption is guaranteed.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)