我在集群配置中使用 Jackrabbit Oak 1.6.1(通过使用默认配置)。有一个包含一个 Oak DB 的 mongodb 服务器。两个 Oak 实例正在 Intellij 中运行,因此我可以调试它们中的每一个。每个 Oak 实例都将自己记录在 clusterNodes 集合中,一切正常。
但是我与其他外部服务(文件转换器、事件总线等)有交互,所以我遇到的情况表明两个 Oak 实例没有同时看到相同的数据(集群不一致)。
场景:
- 将节点添加到 Oak1 上的文件夹中(带有二进制子节点)
- Oak 1 使用 session.save() 记录节点、二进制节点和提交
- Oak 1 将二进制文件发送到文件转换器服务
- 转换完成后,转换器服务使用转换后的二进制文件调用 Oak 2(以添加到父节点)
- Oak 2 尝试在几毫秒前获取 Oak 1 创建的节点
- Oak 2 引发 ItemNotFoundException
只是为了测试,我让 Oak 2 等到节点出现。并且该节点在 Oak 1 创建后大约 500 到 1000 毫秒变得可见。
有人在集群模式下使用 Oak 吗?有没有人看到这种类型的问题?
谢谢