在我的泰坦图数据库中,JobLockStatus
可以是(F(ree或(B(usy基于某些条件。
N 个作业同时尝试更改 RequestId=203 的joblockstatus
。我正在使用以下查询来更新值:
GraphTraversal<Vertex, Vertex> ab =
traversalSource.V().has("RequestJob", "RequestId", 203).has("JobLockStatus","F").property("JobLockStatus", "B").iterate();
将JobLockStatus
的值从"F"更新为"B"应该在任何时候只发生一次,由任何一个作业发生。但就我而言,许多工作正在改变价值。如何避免此类并发问题?
请帮助我解决问题。
解决了这个并发问题。通过使用 consistencyModifier.Lock on jobLockStatus..因此,在任何时候,只有一个作业可以锁定作业锁定状态并更新它。当两个并行作业试图锁定时,只有一个作业会锁定它,而另一个作业会得到永久锁定异常。然后使用 Java 中的 try catch 处理异常...