11.4.4. 关于 Heuristic Outcomes
启发性结果或非混合性的结果是交易参与者的决定不同于交易经理的决定的情况。启发性结果可能会导致系统完整性丢失,通常需要人工干预来解决它们。不要编写依赖于它们的代码。
启发式结果通常在 2 阶段提交(2PC)协议的第二阶段发生。在个别情况下,可能会在 1PC 中产生这个结果。它们通常由底层服务器基础硬件或通信子系统失败所致。
启发式结果可能源自各种子系统或资源的超时结果,即使事务管理器和完整崩溃恢复也是如此。在需要某种形式的分布式协议的任何系统中,系统的某些部分在全局结果上存在差异的情况。
启发式结果有四种:
Heuristic rollback
提交操作无法提交资源,但所有参与者都可以回滚,因此依然能实现原子性成果。
Heuristic commit
尝试回滚操作失败,因为所有参与者都已完成。例如,如果协调员能够成功准备交易,但随后决定回滚(例如,未能更新其日志),则会出现这种情况。此时,参与者可能决定提交。
Heuristic mix
某些参与者已提交,另一些已回滚。
启发式政府.
些更新的内容未知。对于已知的对象,它们或者全部已提交,或者全部已回滚。