mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
1cebd75f62
"ctdb reloadnodes" currently does no sanity checking of the nodes file. This can cause chaos if a line is deleted from the nodes file rather than commented out. It also repeatedly produces a spurious warning for each deleted node, even if the node was deleted a long time ago. Instead compare the nodemap with the contents of the local nodes file to sanity check before attempting any reloads. Note that this is still imperfect if the nodes files are inconsistent across nodes but it is better. Also ensure that any nodes that are to be deleted are already disconnected. Avoid trying to talk to deleted nodes. The current implementation is a bit unfortunate when it comes to deleting nodes. The most obvious alternative to the above complexity would be to reloadnodes on the specified node first, then fetch the node map (in which newly deleted nodes would be marked as such) and then handle the remote nodes. However, the implementation of reloadnodes is asynchronous and it only actions the reload after 1 second. This is presumably to avoid the recovery master noticing the inconsistency between nodemaps and triggering a recovery before all nodes have had their nodemaps updated. Note that this recovery can still occur if the check is done at an inconvenient time. A better long term approach might be to quiesce the recovery master checks while reloadnodes is in progress. Update a unit test to reflect the change. Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
32 lines
427 B
Bash
Executable File
32 lines
427 B
Bash
Executable File
#!/bin/sh
|
|
|
|
. "${TEST_SCRIPTS_DIR}/unit.sh"
|
|
|
|
define_test "3 nodes, no change"
|
|
|
|
setup_nodes <<EOF
|
|
192.168.20.41
|
|
192.168.20.42
|
|
192.168.20.43
|
|
EOF
|
|
|
|
ok <<EOF
|
|
Node 0 is unchanged
|
|
Node 1 is unchanged
|
|
Node 2 is unchanged
|
|
No change in nodes file, skipping unnecessary reload
|
|
EOF
|
|
|
|
simple_test <<EOF
|
|
NODEMAP
|
|
0 192.168.20.41 0x0 CURRENT RECMASTER
|
|
1 192.168.20.42 0x0
|
|
2 192.168.20.43 0x0
|
|
|
|
VNNMAP
|
|
654321
|
|
0
|
|
1
|
|
2
|
|
EOF
|