我目前正在定制一个名为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 社区的内容管理系统专家提供建议。