utubettl: commit transaction after on_task_change
Встретил такую ситуацию при использовании, фикс в данном мр:
Файбер utubettl_fiber_iteration перевел задачу в статус R, сделав коммит, и в этот момент произошел свич контекст и пошел выполняться мой take из другого файбера, который взял задачу, обновил ее и даже записал инфу о take в _queue_taken_2, а уже после пришел в on_task_change файбер с delayed и удалил запись о взятой задаче. Как итог - задаче не может быть выполнен ack/release, так как не проходим проверку в функции check_task_is_taken.
Также исправил форматирование в логе на %s, так как при большом числе, которое не вмещается в number, будет ошибка.
пошел выполняться мой take из другого файбера, который взял задачу, обновил ее и даже записал инфу о take в _queue_taken_2
Значит ли это, что операции с queue вы выполняете внутри транзакций?
Привет! По PR'у есть замечание: если mvcc отключен, то если внутри on_task_change колбека случится yield, то вся транзакция откатится и изменений не случится. Нужно подумать как это правильно поправить, что-бы логика выставляемая в abstract.on_task_change была синхронизирована, а внешний on_task_change - нет.