3 # Verify that if the directory containing the cluster lock is moved
4 # then the current cluster leader no longer claims to be leader, and
5 # no other node claims to be leader. Confirm that if the directory is
6 # moved back then a node will become leader.
8 # This simulates the cluster filesystem containing the cluster lock
9 # being unmounted and remounted.
11 .
"${TEST_SCRIPTS_DIR}/integration.bash"
15 ctdb_test_skip_on_cluster
19 echo "Starting CTDB with cluster lock recheck time set to 5s..."
20 ctdb_nodes_start_custom
-r 5
24 echo "Get cluster lock setting"
25 # shellcheck disable=SC2154
26 # $test_node set by select_test_node() above
27 ctdb_onnode
"$test_node" getreclock
28 # shellcheck disable=SC2154
29 # $out set by ctdb_onnode() above
30 reclock_setting
="$out"
32 if [ -z "$reclock_setting" ] ; then
33 ctdb_test_skip
"Cluster lock is not set"
36 t
="${reclock_setting% 5}"
39 if [ ! -f "$reclock" ] ; then
40 ctdb_test_error
"Cluster lock file \"${reclock}\" is missing"
43 echo "Cluster lock setting is \"${reclock_setting}\""
44 echo "Cluster lock file is \"${reclock}\""
47 leader_get
"$test_node"
49 dir
=$
(dirname "$reclock")
51 echo "Rename cluster lock directory"
54 wait_until_leader_has_changed
"$test_node"
57 # shellcheck disable=SC2154
58 # $leader set by leader_get() & wait_until_leader_has_changed(), above
59 if [ "$leader" != "UNKNOWN" ]; then
60 test_fail
"BAD: leader is ${leader}"
63 echo "OK: leader is UNKNOWN"
66 echo 'Get "leader timeout":'
67 conf_tool
="${CTDB_SCRIPTS_HELPER_BINDIR}/ctdb-config"
68 # shellcheck disable=SC2154
69 # $test_node set by select_test_node() above
70 try_command_on_node
"$test_node" "${conf_tool} get cluster 'leader timeout'"
71 # shellcheck disable=SC2154
72 # $out set by ctdb_onnode() above
74 echo "Leader timeout is ${leader_timeout}s"
77 sleep_time
=$
((2 * leader_timeout
))
78 echo "Waiting for ${sleep_time}s to confirm leader stays UNKNOWN"
81 leader_get
"$test_node"
82 if [ "$leader" = "UNKNOWN" ]; then
83 echo "OK: leader is UNKNOWN"
86 test_fail
"BAD: leader is ${leader}"
89 echo "Restore cluster lock directory"
92 wait_until_leader_has_changed
"$test_node"