RavenDB - 没有乐观并发的并发异常

时间:2015-06-08 09:50:12

标签: ravendb optimistic-concurrency

在我们的Raven数据库实例中,我们会定期获得并发异常。这一直困惑我,因为我们没有启用乐观并发。

谷歌告诉我there is a scenario,如果没有启用乐观并发,可以抛出并发异常 - 你有一个索引在该类型的文档上调用LoadDocument()。我们的代码库确实如此。

但是,我刚刚链接到的主题并未建议采取补救措施。发生并发异常时应该怎么办?应该重试逻辑工作吗?或者我应该做些什么?

1 个答案:

答案 0 :(得分:0)

如果2个线程竞相在同一时间物理修改同一文档,则会引发并发异常。一个线程获胜,其他线程收到并发异常。

由您决定如何处理该方案。

可以做什么的选择:

  1. 没有即可。未处理的异常。与网络下降一分钟没什么不同
  2. 重播即可。最后胜利。您的错误文档是最后一个,重播请求以覆盖所有更改。
  3. 通知即可。陷阱异常。通知用户他们的请求不成功,并让他们查看他们的更改与文档的当前版本。
  4. 合并即可。对两个文件进行差异,将它们合并到一起来源控制自动合并
  5. 手合并。向用户呈现UI,用于展示两个文档并允许用户执行3向合并
  6. 您还可以构建一个智能系统来执行此操作。并发异常,尝试自动合并,如果好,一切都好。自动合并失败,返回并通知用户“抱歉,我们无法接受您的更改,请点击此处比较您的更改”。

相关问题