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

时间:2016-03-11 10:40:42

标签: jcr jackrabbit

我正在开发一个目前包含Jackrabbit 2.6的遗留应用程序,它在某些时候使用了长耳机版本(我甚至不确定它是否使用此版本或其他长耳机版本)。目前,版本控制仍然存在于配置中,其相应的数据库表(*_BINVAL, *_BUNDLE, *_NAMES, *_REFS)仍然存在。

我希望禁用版本并完全删除,因为它占用了我们数据库中的空间,并且通过版本控制持久性管理器的空运行减慢了Jackrabbit垃圾回收的速度。我找不到任何有关如何处理它的信息。

从xml配置中删除<Versioning>...</Versioning>标记并删除相关表是否安全?我该怎么办?

1 个答案:

答案 0 :(得分:0)

不幸的是,版本控制是强制性的。因此,我们需要尽可能多地清理版本信息。在我的情况下,事实证明,混合:版本化mixins消失了(可能是由于自定义节点类型和OCM的变化),留下版本相关的属性。我最终做了什么:

  1. 遍历整个存储库,删除每个节点的版本历史记录(通过删除mixin或我的案例中的版本控制属性),在每个X更改的节点之后保存会话。
  2. 关闭Jackrabbit存储库并重命名数据库中的版本控制表(* _BINVAL,* _BUNDLE,* _NAMES,* _REFS)以将其隐藏在Jackrabbit中。
  3. 再次启动Jackrabbit - 数据库中的表已重新创建,另外三个默认节点为空
  4. 确认存储库完好无损后,删除隐藏的表。
  5. 垃圾收集变得更快 - 我们从两周下降到4小时。版本历史记录包含数百万个条目,这些条目完全没有必要。