hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "nkeywal (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7590) Add a costless notifications mechanism from master to regionservers & clients
Date Tue, 19 Feb 2013 14:45:13 GMT

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

nkeywal commented on HBASE-7590:
--------------------------------

Nearly there. There is one todo left: HConnectionImplementation throws a ZooKeeperConnectionException,
I wonder if I should make it throw a IOException instead.

So now, if activated
- the server sends a status message, at most one every 10 seconds. It contains the list of
the newly dead server. When a server dies, it is sent 5 times, in case a client misses a message.
If there are more than 10 servers to send, they are sent in multiple messages (one every 10
seconds), the newly dead first.
- the clients listens to a status message. When they receive the notification that a server
is dead, they clean their cache and close the connection to this server. When creating a new
connection, they check that the server is not dead. For this, they use the server name and
the start code instead of the hostname:port only.



                
> Add a costless notifications mechanism from master to regionservers & clients
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-7590
>                 URL: https://issues.apache.org/jira/browse/HBASE-7590
>             Project: HBase
>          Issue Type: Bug
>          Components: Client, master, regionserver
>    Affects Versions: 0.96.0
>            Reporter: nkeywal
>            Assignee: nkeywal
>         Attachments: 7590.inprogress.patch, 7590.v1.patch
>
>
> t would be very useful to add a mechanism to distribute some information to the clients
and regionservers. Especially It would be useful to know globally (regionservers + clients
apps) that some regionservers are dead. This would allow:
> - to lower the load on the system, without clients using staled information and going
on dead machines
> - to make the recovery faster from a client point of view. It's common to use large timeouts
on the client side, so the client may need a lot of time before declaring a region server
dead and trying another one. If the client receives the information separatly about a region
server states, it can take the right decision, and continue/stop to wait accordingly.
> We can also send more information, for example instructions like 'slow down' to instruct
the client to increase the retries delay and so on.
>  Technically, the master could send this information. To lower the load on the system,
we should:
> - have a multicast communication (i.e. the master does not have to connect to all servers
by tcp), with once packet every 10 seconds or so.
> - receivers should not depend on this: if the information is available great. If not,
it should not break anything.
> - it should be optional.
> So at the end we would have a thread in the master sending a protobuf message about the
dead servers on a multicast socket. If the socket is not configured, it does not do anything.
On the client side, when we receive an information that a node is dead, we refresh the cache
about it.

--
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

Mime
View raw message