参与者故障

无论何时使用异类协议的分布式事务中的参与者发生故障,协调者都将发送以下错误消息:
-441    Possible inconsistent data at the target DBMS name due to an aborted commit.
此外,数据库服务器还向消息日志发送以下消息:
Data source accessed using gateway name might be in an inconsistent state.
参与者故障并不限于数据库服务器或网关的故障。此外,协调者和网关之间的通信链接的故障被认为是网关故障。如果发生链接故障,那么网关将终止。网关必定会终止,因为它没有保留事务日志,因此无法重新建立与协调者的连接并重新开始事务。由于这种限制,所以存在一些应用场合,在这些应用场合中网关故障可能使数据处于不一致状态。 下表总结了这些应用场合。
参与者发生故障的时间点 预期结果
在参与者接收到来自协调者的落实事务消息之后,但在参与者执行落实之前 维持了数据一致性。
在参与者接收到来自协调者的落实事务消息并落实了事务之后,但在参与者回复协调者之前 数据不一致。
在参与者落实事务并向协调者发送回复之后 如果在协调者接收到回复之前通信链接发生故障,那么数据不一致。如果协调者接收到回复,那么数据是一致的(前提是协调者在写入 COMMIT 记录之前没有发生故障)。

当参与者发生故障时数据库服务器所遵循的恢复过程与两阶段落实中所遵循的过程相同。有关此过程的更多信息,请参阅两阶段落实协议如何处理故障