]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-scripts: Move ctdb.tdb attach to statd-callout
authorMartin Schwenke <mschwenke@ddn.com>
Thu, 29 Jun 2023 03:11:46 +0000 (13:11 +1000)
committerVolker Lendecke <vl@samba.org>
Thu, 30 May 2024 11:42:30 +0000 (11:42 +0000)
All of the other uses of ctdb.tdb are in statd-callout.

New variable statd_callout_db makes it easy to change the database
name in future, perhaps even allowing it to be configurable.

Signed-off-by: Martin Schwenke <mschwenke@ddn.com>
Reviewed-by: Volker Lendecke <vl@samba.org>
ctdb/config/events/legacy/00.ctdb.script
ctdb/config/events/legacy/60.nfs.script
ctdb/config/statd-callout
ctdb/tests/UNIT/eventscripts/statd-callout.001.sh
ctdb/tests/UNIT/eventscripts/statd-callout.002.sh
ctdb/tests/UNIT/eventscripts/statd-callout.003.sh
ctdb/tests/UNIT/eventscripts/statd-callout.004.sh
ctdb/tests/UNIT/eventscripts/statd-callout.005.sh
ctdb/tests/UNIT/eventscripts/statd-callout.006.sh
ctdb/tests/UNIT/eventscripts/statd-callout.007.sh
ctdb/tests/UNIT/eventscripts/stubs/ctdb

index 81c16af08a01c3e5f0b4855bf434c1a31735113b..292081bbe06c47aaccae3bbf24d869bdab1c6b30 100755 (executable)
@@ -120,10 +120,6 @@ init)
            check_non_persistent_databases
        fi
        ;;
-
-startup)
-       $CTDB attach ctdb.tdb persistent
-       ;;
 esac
 
 # all OK
index 727aa9cb529d6b96d65d353dd98d1d3d69ace8e3..6935ad9fadcef375c97202418cc30c49a6a6b703 100755 (executable)
@@ -265,6 +265,10 @@ nfs_callout_init "$script_state_dir"
 
 case "$1" in
 startup)
+       if [ -x "${CTDB_BASE}/statd-callout" ] ; then
+               "${CTDB_BASE}/statd-callout" startup
+       fi
+
        nfs_callout "$@" || exit $?
        ;;
 
index 21655d23adf2017a7aa6353bc224f5a26c60c39b..3f26fdfbfadc4bd472c6242ef0fc0f503a227129 100755 (executable)
@@ -54,6 +54,8 @@ ctdb_setup_state_dir "service" "nfs"
 # shellcheck disable=SC2154
 d="${script_state_dir}/statd-callout"
 
+statd_callout_db="ctdb.tdb"
+
 mkdir -p "$d" || die "Failed to create directory \"${d}\""
 cd "$d" || die "Failed to change directory to \"${d}\""
 
@@ -104,19 +106,30 @@ delete_records()
        while read -r _sip _cip; do
                _key="statd-state@${_sip}@${_cip}"
                echo "\"${_key}\" \"\""
-       done | $CTDB ptrans "ctdb.tdb"
+       done | $CTDB ptrans "$statd_callout_db"
 }
 
 ############################################################
 
-case "$1" in
-# Keep a single file to keep track of the last "add-client" or
-# "del-client'.  These get pushed to ctdb.tdb during "update",
-# which will generally be run once each "monitor" cycle.  In this
-# way we avoid scalability problems with flood of persistent
+# Keep a file per server-IP/client-IP pair, to keep track of the last
+# "add-client" or "del-client'.  These get pushed to a database during
+# "update", which will generally be run once each "monitor" cycle.  In
+# this way we avoid scalability problems with flood of persistent
 # transactions after a "notify" when all the clients re-take their
 # locks.
 
+startup()
+{
+       $CTDB attach "$statd_callout_db" persistent
+}
+
+############################################################
+
+case "$1" in
+startup)
+       startup
+       ;;
+
 add-client)
        # statd does not tell us to which IP the client connected so
        # we must add it to all the IPs that we serve
@@ -165,7 +178,7 @@ update)
        # shellcheck disable=SC2086
        items=$(sed -n "$sed_expr" $files)
        if [ -n "$items" ]; then
-               if echo "$items" | $CTDB ptrans "ctdb.tdb"; then
+               if echo "$items" | $CTDB ptrans "$statd_callout_db"; then
                        # shellcheck disable=SC2086
                        rm $files
                fi
@@ -238,7 +251,9 @@ notify)
                 ip = $1; gsub(/\./, "\\.", ip);
                 printf "s/^key.*=.*statd-state@\\(%s\\)@\\([^\"]*\\).*/\\1 \\2/p\n", ip }')
 
-       statd_state=$($CTDB catdb ctdb.tdb | sed -n "$sed_expr" | sort)
+       statd_state=$($CTDB catdb "$statd_callout_db" |
+               sed -n "$sed_expr" |
+               sort)
        [ -n "$statd_state" ] || exit 0
 
        echo "$statd_state" | send_notifies
index 72933905bbd9f10a954f09e4280a9ccab68bde08..07421620d145454e97da225612fa538c695903a4 100755 (executable)
@@ -7,6 +7,7 @@ define_test "single add-client"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
index ce9f139e9be7de677098aef3d3e68c0e29999d9b..6785d844d54f2f3b55b6743e01efbc77f04de3dd 100755 (executable)
@@ -7,6 +7,7 @@ define_test "2 x add-client, update"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "add-client" "192.168.123.46"
 simple_test_event "update"
index 25bec29824bc0aaeddc56828fe354dd2d6f2368f..796d3b6aab419497bfc6f49006b5293c3f570d23 100755 (executable)
@@ -7,6 +7,7 @@ define_test "add-client, update, del-client, update"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
index dc2156b460ccf10452c7542f19bf91bb473e5ca5..001da78a78050b85db039183988e79f4524d8c4a 100755 (executable)
@@ -7,6 +7,7 @@ define_test "single add-client, notify"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
index 1f802a2e8c3dcd334a94122b3ba753116a722b62..e9555da152d44dafc369283bf7dc94cd1ba76e6c 100755 (executable)
@@ -7,12 +7,14 @@ define_test "2 x add-client to different nodes, notify on 1"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
 ctdb_set_pnn 1
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.46"
 simple_test_event "update"
 
index 8ecba5ceeed428a6e5967f4a637bb4441107dece..96c4cb517e55b4917217a138398e9ea51fbe950d 100755 (executable)
@@ -7,12 +7,14 @@ define_test "2 x add-client to different nodes, notify on both"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
 ctdb_set_pnn 1
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.46"
 simple_test_event "update"
 
index 4445fff274ab68a7e5099b1f8c1b4c6c1c4c8711..ceeb248ef6c24551ea352067bf4606e399d3d7f7 100755 (executable)
@@ -7,6 +7,7 @@ define_test "add-client, del-client, update"
 setup
 
 ok_null
+simple_test_event "startup"
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "del-client" "192.168.123.45"
 simple_test_event "update"
index 20135eb466627781bf15237ffdbb1f1ef8a5d309..dfeca78c03ec60be9bcdd04c7f1041a9e65d9b34 100755 (executable)
@@ -333,6 +333,11 @@ _t_del()
        rm -f "${_t_dir}/$1"
 }
 
+ctdb_attach()
+{
+       _t_setup "$1"
+}
+
 ctdb_pstore()
 {
        _t_setup "$1"