From: Martin Schwenke Date: Thu, 18 Jan 2018 09:02:42 +0000 (+1100) Subject: ctdb-recoverd: Change get_remote_nodemaps() to use connected nodes X-Git-Tag: samba-4.11.14~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8faae66a253840e403cd3f66c8fff2ae7aec680c;p=thirdparty%2Fsamba.git ctdb-recoverd: Change get_remote_nodemaps() to use connected nodes The plan here is to use the nodemaps retrieved by get_remote_nodes() in update_local_flags(). This will improve efficiency, since get_remote_nodes() fetches flags from nodes in parallel. It also means that get_remote_nodes() can be used exactly once early on in main_loop() to retrieve remote nodemaps. Retrieving nodemaps multiple times is unnecessary and racy - a single monitoring iteration should not fetch flags multiple times and compare them. This introduces a temporary behaviour change but it will be of no consequence when the above changes are made. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14466 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs (cherry picked from commit 762d1d8a9605f97973a2c1176de5d29fcc61d15a) --- diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 9fd1debbcf7..92bb9413b88 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -2288,7 +2288,7 @@ static int get_remote_nodemaps(struct ctdb_recoverd *rec, return -1; } - nodes = list_of_active_nodes(ctdb, rec->nodemap, mem_ctx, true); + nodes = list_of_connected_nodes(ctdb, rec->nodemap, mem_ctx, true); state.remote_nodemaps = t; state.rec = rec; @@ -2631,8 +2631,7 @@ static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec, goto takeover_run_checks; } - /* get the nodemap for all active remote nodes - */ + /* Get the nodemaps for all connected remote nodes */ ret = get_remote_nodemaps(rec, mem_ctx, &remote_nodemaps); if (ret != 0) { DBG_ERR("Failed to read remote nodemaps\n");