1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00
samba-mirror/ctdb/tools
Martin Schwenke 415f9f0745 ctdb-failover: Split statd_callout add-client/del-client
rpc.statd is single-threaded and runs its HA callout synchronously. If
it is too slow then latency accumulates and rpc.statd's backlog grows.

Running a pair of add-client/del-client events with the current code
averages ~0.030s in my test environment.  This mean that 1000 clients
reclaiming locks after failover can easily cause 10s of latency.  This
could cause rpc.statd to become unresponsive, resulting in a time out
for an rpcinfo-based health check of the status service.

Split the add-client/del-client events out to a standalone
statd_callout executable, written in C, to be used as the HA callout
for rpc.statd.  All other functions move to statd_callout_helper.
Now, running a pair of add-client/del-client events in my test
environment averages only ~0.002s.  This seems less likely to cause
latency problems.

The standalone statd_callout executable needs to read a configuration
file, which is generated by statd_callout_helper from the "startup"
event.  It also needs access to a list of currently assigned public
IPs.

For backward compatibility, during installation a symlink is created
from $CTDB_BASE/statd-callout to the new statd_callout, which is
installed in the helper directory.

Testing this as part of the eventscript unit tests starts to become
even more of a hack than it used to be.  However, the dependency on
stubs and the corresponding setup of fake state makes it hard to move
this elsewhere.

Signed-off-by: Martin Schwenke <mschwenke@ddn.com>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>

Autobuild-User(master): Martin Schwenke <martins@samba.org>
Autobuild-Date(master): Tue Jun 25 04:24:57 UTC 2024 on atb-devel-224
2024-06-25 04:24:57 +00:00
..
ctdb_diagnostics ctdb: Do not use egrep 2023-07-19 09:01:33 +00:00
ctdb_killtcp.c ctdb-tools: Switch tickle ACK sending message to INFO level 2023-07-10 14:21:30 +00:00
ctdb_lvs ctdb-tool: Add UNKNOWN pseudo state 2022-06-28 09:24:31 +00:00
ctdb_natgw ctdb-tool: Add UNKNOWN pseudo state 2022-06-28 09:24:31 +00:00
ctdb.c lib: Give lib/util/util_file.c its own header file 2024-04-16 23:51:45 +00:00
ltdbtool.c ctdb-tools: Fix signed/unsigned conversion by declaring as size_t 2019-06-05 10:25:49 +00:00
onnode ctdb-tools: Avoid ShellCheck warning SC2317 2023-07-05 11:18:37 +00:00
statd_callout_helper ctdb-failover: Split statd_callout add-client/del-client 2024-06-25 04:24:57 +00:00