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