записи в WAL если мы вернули старое значение или нет? То есть станет ли это изменение локальным или также раскатится по всем нодам? А в версии 2 что-то поменяется?
*_replace исполняется до записи в wal вообще, он ловит транзакцию за хвост и позволяет все перевернуть вверх дном. если в before_replace вернуть старое значение, то операция транзакции превратится в NOP. раскатится оно по нодам или нет, зависит только от ее пары replica_id/lsn. если оригинально транзакция стартанула с текущей ноды — то на других нодах ее нет, и на все ноды раскатится операция NOP, если транзакция прилетела по репликации, то на другой ноде она уже есть, и на эту ноду-источник не вернётся. за исключением ситуации, когда нода-источник транзакции, грохнулась, ей отрезали хвост ее журнала, тогда она пойдет стягивать свои транзакции со своих реплик.
Обсуждают сегодня