|
@@ -231,7 +231,10 @@ static void sync_barrier_handler (unsigned int nodeid, const void *msg)
|
|
|
log_printf (LOGSYS_LEVEL_DEBUG, "Committing synchronization for %s",
|
|
log_printf (LOGSYS_LEVEL_DEBUG, "Committing synchronization for %s",
|
|
|
my_service_list[my_processing_idx].name);
|
|
my_service_list[my_processing_idx].name);
|
|
|
my_service_list[my_processing_idx].state = ACTIVATE;
|
|
my_service_list[my_processing_idx].state = ACTIVATE;
|
|
|
- my_service_list[my_processing_idx].sync_activate ();
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (my_sync_callbacks_retrieve(my_processing_idx, NULL) != -1) {
|
|
|
|
|
+ my_service_list[my_processing_idx].sync_activate ();
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
my_processing_idx += 1;
|
|
my_processing_idx += 1;
|
|
|
if (my_service_list_entries == my_processing_idx) {
|
|
if (my_service_list_entries == my_processing_idx) {
|
|
@@ -544,14 +547,20 @@ static int schedwrk_processor (const void *context)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- my_service_list[my_processing_idx].sync_init (my_trans_list,
|
|
|
|
|
- my_trans_list_entries, my_member_list,
|
|
|
|
|
- my_member_list_entries,
|
|
|
|
|
- &my_ring_id);
|
|
|
|
|
|
|
+ if (my_sync_callbacks_retrieve(my_processing_idx, NULL) != -1) {
|
|
|
|
|
+ my_service_list[my_processing_idx].sync_init (my_trans_list,
|
|
|
|
|
+ my_trans_list_entries, my_member_list,
|
|
|
|
|
+ my_member_list_entries,
|
|
|
|
|
+ &my_ring_id);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
if (my_service_list[my_processing_idx].state == PROCESS) {
|
|
if (my_service_list[my_processing_idx].state == PROCESS) {
|
|
|
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 (my_sync_callbacks_retrieve(my_processing_idx, NULL) != -1) {
|
|
|
|
|
+ res = my_service_list[my_processing_idx].sync_process ();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ res = 0;
|
|
|
|
|
+ }
|
|
|
if (res == 0) {
|
|
if (res == 0) {
|
|
|
sync_barrier_enter();
|
|
sync_barrier_enter();
|
|
|
} else {
|
|
} else {
|
|
@@ -595,7 +604,9 @@ void sync_abort (void)
|
|
|
ENTER();
|
|
ENTER();
|
|
|
if (my_state == SYNC_PROCESS) {
|
|
if (my_state == SYNC_PROCESS) {
|
|
|
schedwrk_destroy (my_schedwrk_handle);
|
|
schedwrk_destroy (my_schedwrk_handle);
|
|
|
- my_service_list[my_processing_idx].sync_abort ();
|
|
|
|
|
|
|
+ if (my_sync_callbacks_retrieve(my_processing_idx, NULL) != -1) {
|
|
|
|
|
+ my_service_list[my_processing_idx].sync_abort ();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* this will cause any "old" barrier messages from causing
|
|
/* this will cause any "old" barrier messages from causing
|