[
https://issues.apache.org/jira/browse/HBASE-8127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13619500#comment-13619500
]
rajeshbabu commented on HBASE-8127:
-----------------------------------
[~ram_krish]
bq. tried removing the code in AM from your patch and all the testcases
including TestMasterFailOver is passing.
Can you run
TestRSKilledWhenMasterInitializing.testMasterFailoverWhenDisablingTableRegionsInRITOnDeadRS
test added in the patch Which will timeout.
bq. And infact SSH in normal cases also will now handle for DISABLED/DISABLING
tables
Its handling only if rit is not null and regions in pending close or closing
state. during master startup we are not able to decide whether the region in
transition or not(regions,rit map dont have entries for the regions). If we
remove null check for rit in SSH,then SSH processing will be slow in normal
case as well(every time unncessarily contact zookeeper to check any znode is
present or not). But the code in AM delete only if node is present.
bq. But i do feel like having same code and doing same job will make our code
less readable and later any bug over here we need to address in 2 places.
We can extract to a method and call the same in 2 places. What do you say Ram?
> Region of a disabling or disabled table could be stuck in transition state
> when RS dies during Master initialization
> --------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-8127
> URL: https://issues.apache.org/jira/browse/HBASE-8127
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.94.5
> Reporter: Jeffrey Zhong
> Assignee: rajeshbabu
> Fix For: 0.94.7
>
> Attachments: HBASE-8127_94_2.patch, HBASE-8127_94_3.patch,
> HBASE-8127_feedback.patch, HBASE-8127.patch, hbase-8127_v1.patch,
> reproduce-hang.patch
>
>
> The issue happens when a RS dies during a master starts up. After the RS
> reports open to the new master instance and dies immediately thereafter, the
> RITs of disabling tables(or disabled table) on the died RS will be in RIT
> state forever.
> I attached a patch to simulate the situation and you can run the following
> command to reproduce the issue:
> {code}mvn test -PlocalTests
> -Dtest=TestMasterFailover#testMasterFailoverWithMockedRITOnDeadRS{code}
> Basically, we skip regions of a dead server inside
> AM.processDeadServersAndRecoverLostRegions as the following code and relies
> on SSH to process those skipped regions:
> {code}
> for (Pair<HRegionInfo, Result> deadRegion : deadServer.getValue()) {
> nodes.remove(deadRegion.getFirst().getEncodedName());
> }
> {code}
> While in SSH, we skip regions of disabling(or disabled table) again by
> function processDeadRegion. Finally comes to the issue that RITs of
> disabling(or disabled table) stuck there forever.
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira