Firebase云函数Admin SDK下Firestore事务遇并发编辑未重试是正常现象吗?
Firestore Admin SDK 事务重试行为说明
你观测到的现象属于预期内的正确行为,Firebase官方文档描述不存在错误,二者差异来自适用的SDK场景不同。
- 官方文档提到的「并发编辑时自动重运行整个事务」,是客户端Web/移动端SDK的默认策略:客户端网络环境不稳定,单次冲突处理成本高,默认自动重试可以降低开发者的异常处理负担。
- Cloud Functions 中使用的 Admin SDK 默认不会自动重试事务:服务端场景下如果开启自动重试,冲突场景很容易产生过高的性能开销,甚至出现死循环风险,因此框架默认将重试控制权交给开发者,需要自行捕获事务失败异常实现重试逻辑。
你测试过程中,事务提交时会校验你此前读取的cars集合是否发生变更,检测到新增car文档的变更后,事务会直接终止,因此delete操作没有执行,也不会自动重运行打印第二次Running transaction日志,完全符合Admin SDK的设计逻辑。
如果需要在Admin SDK场景下实现事务重试,可以自行封装重试逻辑,例如设置最多重试5次,每次间隔固定时长后重新调用runTransaction方法即可。
内容的提问来源于stack exchange,提问作者Johnny Oshika
相关产品推荐
相关产品推荐

