hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jimmy Xiang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7506) Judgment of carrying ROOT/META will become wrong when expiring server
Date Mon, 07 Jan 2013 18:32:13 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13546123#comment-13546123

Jimmy Xiang commented on HBASE-7506:

This is subtle. This part is not touched wrt recent changes. I agree it is possible root/meta
could be assigning to the dead rs, which is processing by SSH.
The existing code assigns root/meta again is not efficient, but won't cause any problem in
such a case.

It makes sense to check it again. However, if they are still RIT at this re-checking moment,
it is probably not efficient to re-assign them than wait, right?

So I think we can do the following:

1. remove class MetaServerShutdownHandler;
2. in ServerShutdownHandler, make isCarryingRoot and isCarryingMeta local variables to process
method, dynamically set it based on AM, as in Chunhui's patch;
3. in verifyAndAssignRootWithRetries, check if root is RIT, if so, should we time it out and
wait, or just force-reassgin?
4. Can we have a similar verifyAndAssignMetaWithRetries in SSH?  If meta can be verified,
no need to re-assign?

[~ram_krish], what do you think?

Adding [~nkeywal] too.

> Judgment of carrying ROOT/META will become wrong when expiring server
> ---------------------------------------------------------------------
>                 Key: HBASE-7506
>                 URL: https://issues.apache.org/jira/browse/HBASE-7506
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.94.3
>            Reporter: chunhui shen
>            Assignee: chunhui shen
>             Fix For: 0.96.0
>         Attachments: 7506-trunk v1.patch
> We will check whether server carrying ROOT/META when expiring the server.
> See ServerManager#expireServer.
> If the dead server carrying META, we assign meta directly in the process of ServerShutdownHandler.
> If the dead server carrying ROOT, we will offline ROOT and then verifyAndAssignRootWithRetries()
> How judgement of carrtying ROOT/META become wrong?
> If region is in RIT, and isCarryingRegion() return true after addressing from zk.
> However, once RIT time out(could be caused by this.allRegionServersOffline &&
!noRSAvailable, see AssignmentManager#TimeoutMonitor)   and we assign it to otherwhere, this
judgement become wrong.
> See AssignmentManager#isCarryingRegion for details
> With the wrong judgement of carrtying ROOT/META, we would assign ROOT/META twice.

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

View raw message