首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两阶段提交库

两阶段提交库
EN

Stack Overflow用户
提问于 2014-03-31 15:45:01
回答 1查看 1.2K关注 0票数 3

我正在查看CouchBase发展指南,并试图了解两个阶段如何提交工作。我觉得他们给出的代码示例与图表不同。

代码示例

它们链接到描述如何从一个帐户到另一个帐户执行此传输点的红宝石吉斯特

据我了解,他们走的路线如下:

  1. 将事务状态更改为pending
  2. 通过更改点和添加事务引用来更新第一个帐户
  3. 通过更改点和添加事务引用来更新第二个帐户
  4. 将事务状态更改为committed
  5. 从第一个帐户中删除交易的引用
  6. 从第二帐户中删除交易的引用
  7. 将事务状态更改为done

在本例中,如果在步骤2和步骤3之间出现故障,我们可以通过将更改为指向任何具有事务引用的帐户进行回滚。

图表示例

这是用来解释两相锁定的图表;我认为它不符合代码示例.

图表似乎表明,您对两个帐户都添加了对事务的引用,然后在中添加/删除两个帐户中的点。

在这个例子中,如果在步骤3和步骤4之间发生了故障,您如何知道回滚什么?你怎么知道你是否将修改后的内容应用到了点上?

图错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 05:34:39

是啊,你是对的。图步骤3还应该在将事务添加到列表的同时应用余额更改。基本上,将事务添加到列表只是一个迹象,表明对余额进行了一些更改。

顺便说一下,在指向原始gist的链接中,您可以找到更完整的可执行解决方案,其中有回滚代码:https://gist.github.com/avsej/3136027

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22766093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档