In some cases it is not enough to perform compare and exchange and we still can get race condition in atomic incrementing. Therefore, it is better to loose a history event than to log error message each time.tags/0.5.6
@@ -101,7 +101,8 @@ rspamd_roll_history_update (struct roll_history *history, struct worker_task *ta | |||
row->completed = FALSE; | |||
} | |||
else { | |||
msg_err ("internal error with history roll occured, row number is invalid: %d", row_num); | |||
/* Race condition */ | |||
history->cur_row = 0; | |||
return; | |||
} | |||