Как откатить частично выполненную операцию?

Middle+
87 просмотров
AFK Offer AI

Для БД — транзакция с ROLLBACK. Для распределённых систем — saga с компенсациями. Практический подход: собираешь слайс cleanup функций по мере выполнения шагов. Если какой-то шаг падает — вызываешь cleanup в обратном порядке. В Go удобно через defer с флагом success: если success не стал true — defer откатывает. Важно чтобы компенсации были идемпотентными.

Следующий вопрос

Как runtime.LockOSThread работает и зачем нужен?