Преглед на файлове

totemknet: Disable forwarding on shutdown

Disabling forwarding will make knet flush the messages (especially
LEAVE one).

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
Jan Friesse преди 6 години
родител
ревизия
d59a18d4a1
променени са 1 файла, в които са добавени 9 реда и са изтрити 5 реда
  1. 9 5
      exec/totemknet.c

+ 9 - 5
exec/totemknet.c

@@ -554,6 +554,14 @@ int totemknet_finalize (
 	qb_loop_poll_del (instance->poll_handle, instance->logpipes[0]);
 	qb_loop_poll_del (instance->poll_handle, instance->knet_fd);
 
+	/*
+	 * Disable forwarding to make knet flush send queue. This ensures that the LEAVE message will be sent.
+	 */
+	res = knet_handle_setfwd(instance->knet_handle, 0);
+	if (res) {
+		knet_log_printf (LOGSYS_LEVEL_CRIT, "totemknet: knet_handle_setfwd failed: %s", strerror(errno));
+	}
+
 	res = knet_host_get_host_list(instance->knet_handle, nodes, &num_nodes);
 	if (res) {
 		knet_log_printf (LOGSYS_LEVEL_ERROR, "Cannot get knet node list for shutdown: %s", strerror(errno));
@@ -561,7 +569,7 @@ int totemknet_finalize (
 		goto finalise_error;
 	}
 
-	/* Tidily shut down all nodes & links. This ensures that the LEAVE message will be sent */
+	/* Tidily shut down all nodes & links. */
 	for (i=0; i<num_nodes; i++) {
 
 		res = knet_link_get_link_list(instance->knet_handle, nodes[i], links, &num_links);
@@ -586,10 +594,6 @@ int totemknet_finalize (
 	}
 
 finalise_error:
-	res = knet_handle_setfwd(instance->knet_handle, 0);
-	if (res) {
-		knet_log_printf (LOGSYS_LEVEL_CRIT, "totemknet: knet_handle_setfwd failed: %s", strerror(errno));
-	}
 	res = knet_handle_free(instance->knet_handle);
 	if (res) {
 		knet_log_printf (LOGSYS_LEVEL_CRIT, "totemknet: knet_handle_free failed: %s", strerror(errno));