问题描述
我正在尝试编写一个可以双活运行的应用程序,两个实例都使用相同的数据库。我担心在更新实体(调用repo.findById(),entity.setX(),repo.save(entity))时存在潜在的竞争条件,如果发现之间存在足够大的延迟,则更新可能会相互覆盖并保存。
要对其进行测试,我制作了一种方法,该方法加载实体,等待10秒钟,然后向list属性添加一些内容并保存。打电话两次,我希望第二次保存会覆盖第一个,但是令人惊讶的是两个更新都得以保留。
这就是我想要的,我想知道是否有人知道弹簧为什么/为什么这样做,因为我想确保它每次都能做到?我知道它默认情况下使用乐观锁定,但是您需要@version批注(我没有)。如果更新来自单独的应用程序,还是仅因为两个更新都来自同一应用程序,这才行吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)