Procházet zdrojové kódy

Fix barrier operation with syncv2 and compat:none or openais service engines.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2750 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake před 16 roky
rodič
revize
cf4e2069b6
1 změnil soubory, kde provedl 7 přidání a 9 odebrání
  1. 7 9
      exec/syncv2.c

+ 7 - 9
exec/syncv2.c

@@ -244,6 +244,11 @@ static void sync_barrier_handler (unsigned int nodeid, const void *msg)
 		}
 	}
 	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 @@ static int schedwrk_processor (const void *context)
 	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);
 }