На самом деле есть веская причина для начального состояния: Протокол 2PC определяет конечный автомат с «начальным» состоянием, который переходит в «ожидающий». Транзакция должна находиться только в состоянии ожидания, когда все участники находятся в состоянии ожидания. Кроме того, переход на «commit» должен запускаться только тогда, когда транзакция находится в состоянии ожидания. Наконец, транзакция должна быть отмечена только как «совершенная», как только все участники успешно совершили.
Если вы начали переход к фиксации без полного достижения ожидающего состояния, вы рискуете нарушить гарантии атомарности и изоляции.
В статье, в которой указано, состояние транзакции изменено на ожидание, прежде чем устанавливать участников в ожидании (вставка записей). Состояние транзакции должно быть зафиксировано до совершения участников. И есть дополнительное состояние, называемое «сделано», это может привести к ошибкам в реализации координатора. Я предлагаю вам взять статью с солью.
'initial' обозначает транзакцию, которая еще не запущена, а' pending' обозначает транзакцию. Речь идет о том, какие транзакции вам нужно откатить даже в случае сбоя по любой причине и точно, что вам нужно сделать, чтобы откатить их обратно, если вам не нужно откатывать начальные транзакции в занятой системе, тогда вы можете сэкономить некоторую нагрузку , – Sammaye