什么是TransientTransactionError
A
TransientTransactionError是归类为暂时性的事务性错误,如果重试,它 可能
会成功。此外,如果未采取任何写锁定且事务(新数据)未反映在事务快照(先前的数据)中,则在提交之前发生TransientTransactionError写冲突。因此,在发生此类错误之前,可以完全安全地重试这些错误。是一次成功的提交。
在这种情况下重试的事务将从事务开始时重试。
请记住,
此错误标签与已采取锁定但事务无法完成其提交的提交错误不同。为此的错误标签是UnknownTransactionCommitResult。之所以值得一提,是因为在理解应用程序中何处发生错误以及潜在的根本原因以及由于不同的错误类型而导致应用程序可以或将如何响应方面的理解上的差异。
如果您使用的是MongoDB支持的驱动程序,则可能有两种原因导致代码出现此错误:
- 在“ errorLabels”字段中包含“ TransientTransactionError”错误标签的任何数据库命令错误。
- 在事务中运行除commitTransaction以外的任何命令时遇到任何网络错误。
MongoDB
Transactions中的代码示例:retry-
transaction显示了如何处理
TransientTransactionError。
如果错误消息为
MongoNetworkError,则表示瞬时事务错误与客户端和服务器之间的网络连接有关。这可能是一次可重试的网络故障,也可能是没有需要网络配置的网络访问。如果客户端在第一次尝试访问服务器时遇到错误,则很可能需要网络配置。如果服务器位于MongoDB
Atlas上,请参阅配置白名单条目。



