ctdb-recoverd: Do not ban on unknown error when taking cluster lock
[samba.git] / ctdb / tests / INTEGRATION / simple / cluster.016.reclock_move_lock_dir.sh
blobca2e7157dfcc2ca57dd2329603c3e2018ba69cfb
1 #!/usr/bin/env bash
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"
13 set -e
15 ctdb_test_skip_on_cluster
17 ctdb_test_init -n
19 echo "Starting CTDB with cluster lock recheck time set to 5s..."
20 ctdb_nodes_start_custom -r 5
22 select_test_node
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}"
37 reclock="${t##* }"
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}\""
45 echo
47 leader_get "$test_node"
49 dir=$(dirname "$reclock")
51 echo "Rename cluster lock directory"
52 mv "$dir" "${dir}.$$"
54 wait_until_leader_has_changed "$test_node"
55 echo
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"
64 echo
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
73 leader_timeout="$out"
74 echo "Leader timeout is ${leader_timeout}s"
75 echo
77 sleep_time=$((2 * leader_timeout))
78 echo "Waiting for ${sleep_time}s to confirm leader stays UNKNOWN"
79 sleep_for $sleep_time
81 leader_get "$test_node"
82 if [ "$leader" = "UNKNOWN" ]; then
83 echo "OK: leader is UNKNOWN"
84 echo
85 else
86 test_fail "BAD: leader is ${leader}"
89 echo "Restore cluster lock directory"
90 mv "${dir}.$$" "$dir"
92 wait_until_leader_has_changed "$test_node"