Parcourir la source

votequorum: change init/clean up to deal with exit races

Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Reviewed-by: Jan Friesse <jfriesse@redhat.com>
Fabio M. Di Nitto il y a 13 ans
Parent
commit
423e37b4ca
1 fichiers modifiés avec 6 ajouts et 19 suppressions
  1. 6 19
      exec/votequorum.c

+ 6 - 19
exec/votequorum.c

@@ -1743,25 +1743,6 @@ static int votequorum_exec_exit_fn (void)
 		ret = votequorum_exec_send_nodeinfo(us->node_id);
 		ret = votequorum_exec_send_nodeinfo(us->node_id);
 	}
 	}
 
 
-	/*
-	 * clean up our internals
-	 */
-
-	/*
-	 * free the node list and qdevice
-	 */
-
-	list_init(&cluster_members_list);
-	qdevice = NULL;
-	us = NULL;
-	memset(cluster_nodes, 0, sizeof(cluster_nodes));
-
-	/*
-	 * clean the tracking list
-	 */
-
-	list_init(&trackers_list);
-
 	LEAVE();
 	LEAVE();
 	return ret;
 	return ret;
 }
 }
@@ -1776,8 +1757,14 @@ static char *votequorum_exec_init_fn (struct corosync_api_v1 *api)
 
 
 	ENTER();
 	ENTER();
 
 
+	/*
+	 * make sure we start clean
+	 */
 	list_init(&cluster_members_list);
 	list_init(&cluster_members_list);
 	list_init(&trackers_list);
 	list_init(&trackers_list);
+	qdevice = NULL;
+	us = NULL;
+	memset(cluster_nodes, 0, sizeof(cluster_nodes));
 
 
 	/*
 	/*
 	 * Allocate a cluster_node for qdevice
 	 * Allocate a cluster_node for qdevice