【发布时间】:2022-05-27 07:54:00
【问题描述】:
在我的应用程序中,我正在使用 mongodb 进行跟踪。
- 启动 mongodb 会话并启动事务
- 阅读文档
- 根据文档中的值和其他一些参数进行一些计算
- 使用步骤 3 中的计算结果更新在步骤 2 中读取的文档
- 提交事务并结束会话
上述过程在TransientTransactionError上重试执行,因此如果事务由于并发问题而失败,则重试过程。
如果在上述过程中进行了两个并发调用,如果两个调用在其中任何一个写入文档之前都读取了文档,我只需要一个调用就可以成功写入文档,而另一个调用失败。如果这没有发生,我就不会得到我想要达到的预期结果。
我是否可以期望 mongodb 在这种情况下会失败一次调用,因此将在文档的更新图片上重试该过程?
【问题讨论】:
标签: mongodb transactions