gpt4 book ai didi

java - 两阶段提交回滚

转载 作者:行者123 更新时间:2023-11-30 03:38:42 25 4
gpt4 key购买 nike

我了解两阶段提交架构。假设有 2 个奴隶和 1 个主人,所有准备阶段都会顺利进行。当master要求slave 1提交时,提交没问题。当master要求slave 2提交时,它失败了。所以master现在需要回滚整个事务。我的问题是从机 1 现在将如何回滚,因为它已经提交了?据我所知,提交是完整且最终的。磁盘上可能有保存点或日志来恢复状态,但这可能需要 DBA 的帮助。

引用 SO - Can a transaction be rolled back after it's committed and connection is closed?

最佳答案

这通常是不可能的。两阶段提交的准备阶段应该做一切必要的事情来使事务持久,除了使其对其他人可见之外。成功完成准备后,应该始终可以提交。一旦提交了两阶段提交,就无法撤消。

如果已准备好的事务的提交失败(例如,因为资源暂时不可用),则资源管理器应该能够恢复事务并重试提交。如果这是不可能的,那么该资源不支持真正的两阶段提交,并且可能是伪造的(例如通过忽略准备调用)。

所以成功的提交不应该回滚,而失败的提交应该重试!

关于java - 两阶段提交回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com