Hi,
I noticed a quirk with CLM where it sometimes passes a client application a
CLM node-ID of zero in saClmClusterTrackCallback. The problem seems to be a
timing issue at startup.
The situation is a client application is registering with the CLM service at
the same time corosync is starting up and loading the service. The client is
calling saClmClusterTrack() with the SA_TRACK_CURRENT flag, so it will get a
saClmClusterTrackCallback callback as soon as it registers.
However, it looks like the local node-ID (cluster_node_entries[0]) is zero
until the clm_service_engine[] clm_confchg_fn() callback is first called.
cluster_node_count gets initialized to '1' earlier in clm_exec_init_fn(). So
there is a brief window at startup when a client can connect where:
cluster_node_count = 1
cluster_node_entries[0] = 0
The attached patch avoids the problem by initializing cluster_node_count
slightly later, although it's not a particularly elegant solution.
We're using openais 1.1.2 and corosync 1.2.0, although I couldn't see anything
about something like this being fixed in the later releases.
BTW, 'Accessing Sources' on the OpenAIS webpage still talks about using
subversion - should this be updated to GIT now?
http://openais.org/doku.php?id=developers
Regards,
Tim
diff --git a/services/clm.c b/services/clm.c
index 06ea7e8..bc6a765 100644
--- a/services/clm.c
+++ b/services/clm.c
@@ -390,8 +390,6 @@ static int clm_exec_init_fn (struct corosync_api_v1 *corosync_api)
#endif
}
- cluster_node_count = 1;
-
return (0);
}
@@ -569,6 +567,12 @@ static void clm_confchg_fn (
int i;
unsigned int node_ids[PROCESSOR_COUNT_MAX];
+ /* If this is the first config-change event, the local node's ID won't have
+ * been initialised yet. Update node-count to now include the local node */
+ if (cluster_node_count == 0) {
+ cluster_node_count = 1;
+ }
+
view_current = ring_id->seq / 4;
if (view_initial == 0) {
view_initial = ring_id->seq / 4;
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais