recoverd: When updating flags on nodes, send updated flags and not old flags
authorAmitay Isaacs <amitay@gmail.com>
Wed, 26 Jun 2013 05:22:46 +0000 (15:22 +1000)
committerMichael Adam <obnox@samba.org>
Mon, 26 Aug 2013 11:35:50 +0000 (13:35 +0200)
This was broken by commit a9a1156ea4e10483a4bf4265b8e9203f0af033aa.
Instead of a SRVID_SET_NODE_FLAGS message to recovery daemon, a control
was sent to the local daemon which in turn informed the recovery daemon.
And while doing this change old flags were sent via CONTROL_MODIFY_FLAGS.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit 7eb2f89979360b6cc98ca9b17c48310277fa89fc)

server/ctdb_recoverd.c

index 56e4e287064f8f57e46403db7fd7f944cfa02be2..c660aac271225b4b4170b8c0facd30c292d6c5e9 100644 (file)
@@ -966,7 +966,7 @@ static int update_local_flags(struct ctdb_recoverd *rec, struct ctdb_node_map *n
                           Since we are the recovery master we can just as
                           well update the flags on all nodes.
                        */
-                       ret = ctdb_ctrl_modflags(ctdb, CONTROL_TIMEOUT(), nodemap->nodes[j].pnn, nodemap->nodes[j].flags, ~nodemap->nodes[j].flags);
+                       ret = ctdb_ctrl_modflags(ctdb, CONTROL_TIMEOUT(), nodemap->nodes[j].pnn, remote_nodemap->nodes[j].flags, ~remote_nodemap->nodes[j].flags);
                        if (ret != 0) {
                                DEBUG(DEBUG_ERR, (__location__ " Unable to update nodeflags on remote nodes\n"));
                                return -1;