如何在 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 的变化),留下了与版本相关的属性。我最终做了什么:
- 遍历整个存储库,删除每个节点的版本历史记录(在我的例子中,通过删除 mixin 或版本控制属性),在每 X 个更改的节点后保存会话。
- 关闭 Jackrabbit 存储库并重命名数据库中的版本控制表(*_BINVAL、*_BUNDLE、*_NAMES、*_REFS)以对 Jackrabbit 隐藏它们。
- 再次启动 Jackrabbit - 数据库中的表已重新创建,此外三个默认节点为空
- 确认存储库完好无损后,删除隐藏表。
垃圾收集变得更快了 - 我们从两周减少到 4 小时。版本历史包含数百万条目,完全没有必要。
我正在开发一个遗留应用程序,目前包含 Jackrabbit 2.6
,它在某些时候使用了 jackrabbit 版本控制(我什至不确定它是与这个还是另一个 jackrabbit 版本一起使用)。当前版本控制仍然存在于配置中,并且其对应的数据库表 (*_BINVAL, *_BUNDLE, *_NAMES, *_REFS)
仍然存在。
我想禁用并完全删除版本控制,因为它在我们的数据库中占用 space 并在版本持久性管理器上使用空的 运行 减慢 Jackrabbit 垃圾收集。我找不到任何关于如何进行的信息。
简单地从 xml 配置中删除 <Versioning>...</Versioning>
标记并删除相关表是否安全?我该如何进行?
不幸的是,版本控制是强制性的。因此,我们需要尽可能多地清理版本信息。在我的例子中,结果是 mix:versionable mixins 以某种方式消失了(可能是由于自定义节点类型和 OCM 的变化),留下了与版本相关的属性。我最终做了什么:
- 遍历整个存储库,删除每个节点的版本历史记录(在我的例子中,通过删除 mixin 或版本控制属性),在每 X 个更改的节点后保存会话。
- 关闭 Jackrabbit 存储库并重命名数据库中的版本控制表(*_BINVAL、*_BUNDLE、*_NAMES、*_REFS)以对 Jackrabbit 隐藏它们。
- 再次启动 Jackrabbit - 数据库中的表已重新创建,此外三个默认节点为空
- 确认存储库完好无损后,删除隐藏表。
垃圾收集变得更快了 - 我们从两周减少到 4 小时。版本历史包含数百万条目,完全没有必要。