1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-07 17:18:11 +03:00
samba-mirror/ctdb/config
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
..
events ctdb-failover: Split statd_callout add-client/del-client 2024-06-25 04:24:57 +00:00
nfs-checks.d ctdb-scripts: Stop/start mount/rquotad/status via NFS call-out 2019-03-31 10:45:20 +00:00
ctdb-crash-cleanup.sh ctdb-scripts: Avoid ShellCheck warning SC2164 2022-07-22 06:38:32 +00:00
ctdb.conf ctdb-config: [cluster] recovery lock -> [cluster] cluster lock 2022-01-17 10:21:33 +00:00
ctdb.init ctdb-scripts: Drop uses of ctdbd_wrapper 2022-04-06 06:34:37 +00:00
ctdb.sysconfig ctdb-config: Drop CTDB_STARTUP_TIMEOUT 2022-04-06 06:34:37 +00:00
ctdb.tunables ctdb-scripts: Tunables are now loaded from ctdb.tunables 2018-03-28 02:57:21 +02:00
debug_locks.sh ctdb-scripts: Avoid ShellCheck warning SC2164 2022-07-22 06:38:32 +00:00
debug-hung-script.sh ctdb-scripts: Avoid ShellCheck warning SC2164 2022-07-22 06:38:32 +00:00
functions ctdb-failover: Split statd_callout add-client/del-client 2024-06-25 04:24:57 +00:00
nfs-linux-kernel-callout ctdb-scripts: Add script option CTDB_NFS_EXPORTS_FILE 2024-05-30 11:42:30 +00:00
notification.README ctdb-scripts: Change directory for notifications to events/notification 2018-06-05 17:47:26 +02:00
notify.sh ctdb-scripts: Change directory for notifications to events/notification 2018-06-05 17:47:26 +02:00
README ctdb-failover: Split statd_callout add-client/del-client 2024-06-25 04:24:57 +00:00
script.options ctdb-scripts: Drop event script CTDB_MANAGED_<service> variables 2018-07-11 11:48:39 +02:00

This directory contains run-time support scripts for CTDB.

Selected highlights:

  ctdb.init

    An initscript for starting ctdbd at boot time.

  events/

    Eventscripts.  See events/README for more details.

  functions

    Support functions, sourced by eventscripts and other scripts.

Notes:

* All of these scripts are written in POSIX Bourne shell.  Please
  avoid bash-isms, including the use of "local" variables (which are
  not available in POSIX shell).

* Do not use absolute paths for commands.  Unit tests attempt to
  replace many commands with stubs and can not do this if commands are
  specified with absolute paths.  The functions file controls $PATH so
  absolute paths should not be required.