如何在 Jackrabbit 中禁用版本控制?

How to disable versioning in Jackrabbit?

我正在开发一个遗留应用程序,目前包含 Jackrabbit 2.6,它在某些时候使用了 jackrabbit 版本控制(我什至不确定它是与这个还是另一个 jackrabbit 版本一起使用)。当前版本控制仍然存在于配置中,并且其对应的数据库表 (*_BINVAL, *_BUNDLE, *_NAMES, *_REFS) 仍然存在。

我想禁用并完全删除版本控制,因为它在我们的数据库中占用 space 并在版本持久性管理器上使用空的 运行 减慢 Jackrabbit 垃圾收集。我找不到任何关于如何进行的信息。

简单地从 xml 配置中删除 <Versioning>...</Versioning> 标记并删除相关表是否安全?我该如何进行?

不幸的是,版本控制强制性的。因此,我们需要尽可能多地清理版本信息。在我的例子中,结果是 mix:versionable mixins 以某种方式消失了(可能是由于自定义节点类型和 OCM 的变化),留下了与版本相关的属性。我最终做了什么:

  1. 遍历整个存储库,删除每个节点的版本历史记录(在我的例子中,通过删除 mixin 或版本控制属性),在每 X 个更改的节点后保存会话。
  2. 关闭 Jackrabbit 存储库并重命名数据库中的版本控制表(*_BINVAL、*_BUNDLE、*_NAMES、*_REFS)以对 Jackrabbit 隐藏它们。
  3. 再次启动 Jackrabbit - 数据库中的表已重新创建,此外三个默认节点为空
  4. 确认存储库完好无损后,删除隐藏表。

垃圾收集变得更快了 - 我们从两周减少到 4 小时。版本历史包含数百万条目,完全没有必要。