cluster: RHEL55 - groupd: handle partition merges
David Teigland
teigland at fedoraproject.org
Tue Dec 15 20:20:11 UTC 2009
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=23d5cbe5dfcf20040814a09aafa33faf9f6f66e9
Commit: 23d5cbe5dfcf20040814a09aafa33faf9f6f66e9
Parent: 3234bbd17557cf9cb86d648bb2ad3d43f4c003b7
Author: David Teigland <teigland at redhat.com>
AuthorDate: Tue Dec 8 15:58:02 2009 -0600
Committer: David Teigland <teigland at redhat.com>
CommitterDate: Tue Dec 15 15:15:42 2009 -0600
groupd: handle partition merges
bz 546082
The cman disallowed features means cman does not report
nodes that rejoin and then subsequently leave of fail.
But, the cpg api's do show these disallowed nodes rejoin
and then fail again.
The groupd recovery tries to match up the cpg and cman
node failures, which doesn't work when cman won't report
a disallowed node joining/failing. To fix, just skip
waiting for the cman nodedown event if the node isn't a
member.
Signed-off-by: David Teigland <teigland at redhat.com>
---
group/daemon/app.c | 6 ++++++
group/daemon/cman.c | 2 +-
group/daemon/gd_internal.h | 1 +
3 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/group/daemon/app.c b/group/daemon/app.c
index 03952df..55ba6fd 100644
--- a/group/daemon/app.c
+++ b/group/daemon/app.c
@@ -307,6 +307,12 @@ struct recovery_set *add_recovery_set_cpg(int nodeid, int procdown)
}
}
+ if (!rs->cman_update && !is_cman_member(nodeid)) {
+ log_debug("add_recovery_set_cpg nodeid %d set cman_update",
+ nodeid);
+ rs->cman_update = 1;
+ }
+
return rs;
}
diff --git a/group/daemon/cman.c b/group/daemon/cman.c
index d70bf15..68b4a43 100644
--- a/group/daemon/cman.c
+++ b/group/daemon/cman.c
@@ -60,7 +60,7 @@ static int is_old_member(int nodeid)
return is_member(old_nodes, old_node_count, nodeid);
}
-static int is_cman_member(int nodeid)
+int is_cman_member(int nodeid)
{
return is_member(cman_nodes, cman_node_count, nodeid);
}
diff --git a/group/daemon/gd_internal.h b/group/daemon/gd_internal.h
index d5a0b03..c95d057 100644
--- a/group/daemon/gd_internal.h
+++ b/group/daemon/gd_internal.h
@@ -278,6 +278,7 @@ int client_add(int fd, void (*workfn)(int ci), void (*deadfn)(int ci));
void client_dead(int ci);
/* cman.c */
+int is_cman_member(int nodeid);
int setup_cman(void);
int kill_cman(int nodeid);
int shutdown_cman(void);
More information about the cluster-commits
mailing list