REST API + 数据库调用争用条件

REST API + DB call race condition

提问人:Tesla 提问时间:11/17/2023 最后编辑:Tesla 更新时间:11/17/2023 访问量:23

问:

因此,我在 API 路由中具有以下逻辑:

  1. 调用对象 = db.getObjectInfo()
  2. 如果 object.isAvailable === TRUE),则 db.updateObjectInfo(..将 isAvailable 设置为 FALSE..)并执行一些操作。操作完成后,db.updateObjectInfo(..set isAvailable 设置为 TRUE..)
  3. 如果 object.isAvailable === FALSE),则返回并不执行任何操作

我如何确保如果非常快速地为此 API 发出两个请求,则在第一个请求可以更新并将 isAvailable 设置为 FALSE 之前,不存在第二个请求执行 object = db.getObjectInfo() 的竞争条件。导致两个请求都执行该操作?

这是在节点快速路由和 postgres DB 上。

节点.js PostgreSQL 快捷

评论

0赞 Kamran 11/17/2023
试试锁定: postgresql.org/docs/current/explicit-locking.html

答: 暂无答案