Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.95.2
-
None
-
Reviewed
-
-
0.96notable
Description
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.
Attachments
Attachments
Issue Links
- breaks
-
HBASE-18390 Sleep too long when finding region location failed
- Resolved
- is required by
-
HBASE-5843 Improve HBase MTTR - Mean Time To Recover
- Closed
- relates to
-
HBASE-28941 Clear all meta caches of the server on which hardware failure related exceptions occurred
- Patch Available
- requires
-
HBASE-7756 Strange code in ServerCallable#shouldRetry
- Closed
-
HBASE-7789 Clean DeadServer.java and add a Jitter method in ConnectionUtils
- Closed
-
HBASE-7861 Use the ServerName in the Connection#getClient and Connection#getAdmin code
- Closed