Corda 任何流是否可以将两个用户的软锁同时应用到相同的状态?

Corda 任何流是否可以将两个用户的软锁同时应用到相同的状态?,corda,softlock,Corda,Softlock,我正在尝试在从vault中获取流中的状态后立即将其软锁定,然后使用Jmeter运行并发请求来测试这一点。问题是,如果我运行5个线程的请求,锁会被2个线程应用到相同的状态,从而导致公证人异常。其他3个线程工作正常,抛出用户定义的流异常(我想实现) 下面是应用软锁后打印的日志 February 28th 2020, 12:02:32.096 cordanode host-dev 06:32:32.095 [Node thread-1] INFO somepackage.someFl

我正在尝试在从vault中获取流中的状态后立即将其软锁定,然后使用Jmeter运行并发请求来测试这一点。问题是,如果我运行5个线程的请求,锁会被2个线程应用到相同的状态,从而导致公证人异常。其他3个线程工作正常,抛出用户定义的流异常(我想实现)

下面是应用软锁后打印的日志

February 28th 2020, 12:02:32.096    cordanode   host-dev    06:32:32.095 [Node thread-1] INFO  somepackage.someFlow - Concurrent Execution - State locked: c6a7aa91-eb04-4243-a556-71db955b1d6c  with softLockUUID : 4a1e5cf8-6f36-4c29-bc29-86951ed30b7f
February 28th 2020, 12:02:30.978    cordanode   host-dev    06:32:30.977 [Node thread-1] INFO  somepackage.someFlow - Concurrent Execution - State locked: c6a7aa91-eb04-4243-a556-71db955b1d6c  with softLockUUID : 53e6729c-caaa-45df-b230-a7fb1001ea2d
注意:也尝试使用
同步的
块,但也没有帮助

如果其他任何人面临相同的问题或能够解决此问题,请分享有关如何避免
net.corda.core.flows.NotaryException:无法公证交易
并成功应用软锁的参考或示例


谢谢

首先,让我们考虑一下何时更新状态?状态将在最终流中得到公证和更新。它是按顺序发生的

1) 公证

2) 向各方广播并记录在分类账上

因此,如果任何其他试图访问/更改状态的交易,公证人会将其裁定为双重支出。进程不需要软锁

更新状态时不可能出现赛车问题

February 28th 2020, 12:02:32.096    cordanode   host-dev    06:32:32.095 [Node thread-1] INFO  somepackage.someFlow - Concurrent Execution - State locked: c6a7aa91-eb04-4243-a556-71db955b1d6c  with softLockUUID : 4a1e5cf8-6f36-4c29-bc29-86951ed30b7f
February 28th 2020, 12:02:30.978    cordanode   host-dev    06:32:30.977 [Node thread-1] INFO  somepackage.someFlow - Concurrent Execution - State locked: c6a7aa91-eb04-4243-a556-71db955b1d6c  with softLockUUID : 53e6729c-caaa-45df-b230-a7fb1001ea2d