【发布时间】:2013-11-15 05:04:40
【问题描述】:
我目前正在定制一个名为Atlassian Confluence 的内容管理系统。
在此 CMS 中,您可以创建/编辑页面以及将文件上传到页面并进行渲染(如图像或 ms office 文档)。
如果您创建一个页面,然后对其进行 10 次编辑(单击“编辑”,输入一些新文本,单击“保存”10 次),CMS 将创建同一页面的 10 个以上版本。所以你基本上永远不会失去任何东西。
但是,我注意到这个产品偶尔会创建 2 个,有时是 3 个新版本,只有一个编辑!所以当然我一直在谷歌上搜索并发现报告了类似的问题:
https://jira.atlassian.com/browse/CONF-13480
https://jira.atlassian.com/browse/CONF-10662
https://jira.atlassian.com/browse/CONF-18970
https://jira.atlassian.com/browse/CONF-9857
https://jira.atlassian.com/browse/CONF-16732
https://jira.atlassian.com/browse/CONF-18970
如果我听到人们所说的正确 - 数据库事务中有 2 个或更多线程在做同样的事情。在一个提交到数据库之前,这些线程不能互相看到。但由于某种原因,另一个线程不会停止并进行第二次提交 - 所以你最终会得到同一页面编辑的 2 个或更多版本。
如何在我们的系统上解决这个问题?有什么办法可以防止重复版本被提交?
我正在向 stackoverflow 社区的内容管理系统专家寻求建议。
【问题讨论】:
-
这个问题似乎跑题了,因为它是关于 Confluence 的。
标签: java multithreading oracle11g content-management-system request