You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Duo Zhang (Jira)" <ji...@apache.org> on 2021/06/23 15:41:00 UTC

[jira] [Updated] (HBASE-26029) It is not reliable to use nodeDeleted event to track region server's death

     [ https://issues.apache.org/jira/browse/HBASE-26029?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Duo Zhang updated HBASE-26029:
------------------------------
    Description: 
When implementing HBASE-26011, [~sunxin] pointed out an interesting scenario, where a region server up and down between two sync requests, then we can not know the death of the region server.

https://github.com/apache/hbase/pull/3405#discussion_r656720923

This is a valid point, and when thinking of a solution, I noticed that, the current zk iplementation has the same problem. Notice that, a watcher on zk can only be triggered once, so after zk triggers the watcher, and before you set a new watcher, it is possible that a region server is up and down, and you will miss the nodeDeleted event for this region server.

I think, the general approach here, which could works for both master based and zk based replication tracker is that, we should not rely on the tracker to tell you which region server is dead. Instead, we just provide the list of live regionservers, and the upper layer should compare this list with the expected list(for replication, the list should be gotten by listing replicators), to detect the dead region servers.

  was:
When implementing HBASE-26011, [~sunxin] pointed out an interesting scenario, where a region server up and down between two sync requests, then we can not know the death of the region server.

This is a valid point, and when thinking of a solution, I noticed that, the current zk iplementation has the same problem. Notice that, a watcher on zk can only be triggered once, so after zk triggers the watcher, and before you set a new watcher, it is possible that a region server is up and down, and you will miss the nodeDeleted event for this region server.

I think, the general approach here, which could works for both master based and zk based replication tracker is that, we should not rely on the tracker to tell you which region server is dead. Instead, we just provide the list of live regionservers, and the upper layer should compare this list with the expected list(for replication, the list should be gotten by listing replicators), to detect the dead region servers.


> It is not reliable to use nodeDeleted event to track region server's death
> --------------------------------------------------------------------------
>
>                 Key: HBASE-26029
>                 URL: https://issues.apache.org/jira/browse/HBASE-26029
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>            Priority: Critical
>
> When implementing HBASE-26011, [~sunxin] pointed out an interesting scenario, where a region server up and down between two sync requests, then we can not know the death of the region server.
> https://github.com/apache/hbase/pull/3405#discussion_r656720923
> This is a valid point, and when thinking of a solution, I noticed that, the current zk iplementation has the same problem. Notice that, a watcher on zk can only be triggered once, so after zk triggers the watcher, and before you set a new watcher, it is possible that a region server is up and down, and you will miss the nodeDeleted event for this region server.
> I think, the general approach here, which could works for both master based and zk based replication tracker is that, we should not rely on the tracker to tell you which region server is dead. Instead, we just provide the list of live regionservers, and the upper layer should compare this list with the expected list(for replication, the list should be gotten by listing replicators), to detect the dead region servers.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)