BreezeJS 如何处理死锁情况?

How does BreezeJS handle deadlocking situations?

所以问题主要在标题中,但经过一些研究后,我真的找不到任何关于此的更深入的信息。大多数情况下,我想知道是否发生死锁情况 Breeze 会自动重新尝试提交,还是只是 return 将错误返回前端以尝试再次保存?任何更深入的文档或文章将不胜感激!

在某种程度上,这取决于您使用的服务器后端。但一般来说,breeze 不会尝试重试死锁失败,而是 return 表示发生死锁的异常。然后您可以通过处理客户端异常并重新执行查询来重试自己的保存。

请注意,由于大多数 breeze 服务器自动 toposort 保存请求中的实体的方式,与不执行此类排序相比,死锁的可能性要小得多。这里的想法是,通过确保程序的多个实例在更新同一组表时使用相同的顺序,我们可以减少死锁的可能性。

此拓扑排序是任何基于 Entity Framework 的后端以及 Breeze Node/Sequelize(MySQL、Postgress)提供程序的一部分,并且很可能被添加到 Breeze NHibernate 和MongoDb 供应商在不久的将来。