Что такое compensating transaction?

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

Compensating transaction — откатная операция в саге, которая отменяет эффект уже выполненной локальной транзакции. Списали деньги → доставка не удалась → компенсация: возврат денег. Это не настоящий rollback (данные могли уже измениться), а новая операция, которая логически отменяет предыдущую. Компенсации нужно проектировать для каждого шага саги. Они должны быть идемпотентными (могут вызваться повторно) и always-succeed (компенсация не должна падать). Если компенсация не удалась — нужен ручной разбор или retry до победного.

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

Как реализовать worker pool?