The activate functionality of a service engine is occurring before a
barrier completes.  This is resulting in incomplete synchronization with
compatibility:none option for ckpt service, and any compatibility mode
for msg/dlck.

This patch fixes that problem.

Regards
-steve
Index: syncv2.c
===================================================================
--- syncv2.c	(revision 2739)
+++ syncv2.c	(working copy)
@@ -244,6 +244,11 @@
 		}
 	}
 	if (barrier_reached) {
+		log_printf (LOGSYS_LEVEL_DEBUG, "Committing synchronization for %s\n",
+			my_service_list[my_processing_idx].name);
+		my_service_list[my_processing_idx].state = ACTIVATE;
+		my_service_list[my_processing_idx].sync_activate ();
+
 		my_processing_idx += 1;
 		if (my_service_list_entries == my_processing_idx) {
 			my_memb_determine_list_entries = 0;
@@ -551,19 +556,12 @@
 	if (my_service_list[my_processing_idx].state == PROCESS) {
 		my_service_list[my_processing_idx].state = PROCESS;
 		res = my_service_list[my_processing_idx].sync_process ();
-		if (res != -1) {
-			my_service_list[my_processing_idx].state = ACTIVATE;
+		if (res == 0) {
+			sync_barrier_enter();
 		} else {
 			return (-1);
 		}
 	}
-	if (my_service_list[my_processing_idx].state == ACTIVATE) {
-		my_service_list[my_processing_idx].state = ACTIVATE;
-		my_service_list[my_processing_idx].sync_activate ();
-		log_printf (LOGSYS_LEVEL_DEBUG, "Committing synchronization for %s\n",
-			my_service_list[my_processing_idx].name);
-		sync_barrier_enter();
-	}
 	return (0);
 }
 
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to