You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Zhihong Yu (Issue Comment Edited) (JIRA)" <ji...@apache.org> on 2012/01/11 20:07:38 UTC
[jira] [Issue Comment Edited] (HBASE-5179) Concurrent processing of
processFaileOver and ServerShutdownHandler may cause region is assigned
before completing split log, it would cause data loss
[ https://issues.apache.org/jira/browse/HBASE-5179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184286#comment-13184286 ]
Zhihong Yu edited comment on HBASE-5179 at 1/11/12 7:07 PM:
------------------------------------------------------------
I agree with the spirit of this class. Good stuff Chunhui.
This is awkward name for a method, getDeadServersUnderProcessing. Should it be getDeadServers? Does it need to be a public method? Seems fine that it be package private.
Is serversWithoutSplitLog a good name for a local variable? Should it be deadServers with a comment saying that deadServers are processed by servershutdownhandler and it will be taking care of the log splitting?
Is this right -- for trunk?
{code}
- } else if (!serverManager.isServerOnline(regionLocation.getServerName())) {
+ } else if (!onlineServers.contains(regionLocation.getHostname())) {
{code}
Online servers is keyed by a ServerName, not a hostname.
What is a deadServersUnderProcessing? Does DeadServers keep list of all servers that ever died? Is that a good idea? Shouldn't finish remove item from deadservers rather than just from deadServersUnderProcessing
Change name of this method, cloneProcessingDeadServers. Just call it getDeadServers? That its a clone is an internal implementation detail?
was (Author: stack):
I agree with the spirit of this class. Good stuff Chunhui.
This is awkward name for a method, getDeadServersUnderProcessing. Should it be getDeadServers? Does it need to be a public method? Seems fine that it be package private.
Is serversWithoutSplitLog a good name for a local variable? Should it be deadServers with a comment saying that deadServers are processed by servershutdownhandler and it will be taking care of the log splitting?
Is this right -- for trunk?
{code}
- } else if (!serverManager.isServerOnline(regionLocation.getServerName())) {
+ } else if (!onlineServers.contains(regionLocation.getHostname())) {
Online servers is keyed by a ServerName, not a hostname.
What is a deadServersUnderProcessing? Does DeadServers keep list of all servers that ever died? Is that a good idea? Shouldn't finish remove item from deadservers rather than just from deadServersUnderProcessing
Change name of this method, cloneProcessingDeadServers. Just call it getDeadServers? That its a clone is an internal implementation detail?
> Concurrent processing of processFaileOver and ServerShutdownHandler may cause region is assigned before completing split log, it would cause data loss
> -------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-5179
> URL: https://issues.apache.org/jira/browse/HBASE-5179
> Project: HBase
> Issue Type: Bug
> Components: master
> Affects Versions: 0.90.2
> Reporter: chunhui shen
> Assignee: chunhui shen
> Attachments: 5179-90.txt, 5179-v2.txt, hbase-5179.patch
>
>
> If master's processing its failover and ServerShutdownHandler's processing happen concurrently, it may appear following case.
> 1.master completed splitLogAfterStartup()
> 2.RegionserverA restarts, and ServerShutdownHandler is processing.
> 3.master starts to rebuildUserRegions, and RegionserverA is considered as dead server.
> 4.master starts to assign regions of RegionserverA because it is a dead server by step3.
> However, when doing step4(assigning region), ServerShutdownHandler may be doing split log, Therefore, it may cause data loss.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira