发布时,遇到的activationStatus已被外部修改

时间:2016-12-13 15:11:21

标签: magnolia

我正在使用命令"激活"对多个节点进行更新,然后批量发布(大量数据)。以编程方式发布节点,但有时我不知道为什么有时会出错。它到目前为止只发生过几次,所以我发现很难弄清楚造成这个问题的是什么。

这是抛出的错误。

Caused by: org.apache.jackrabbit.core.state.StaleItemStateException: 8b3ce2d4-eb7b-4838-901c-413aa9eeee84/{http://www.magnolia.info/jcr/mgnl}activationStatus has been modified externally
    at org.apache.jackrabbit.core.ItemSaveOperation.removeTransientItems(ItemSaveOperation.java:723)
    at org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:228)

有没有人遇到过类似的问题?或者知道在哪里查看这个问题?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

基本上内部更新操作会导致Magnolia修改激活状态(这是正确的)。当此操作正在进行时,更新操作将接管并尝试更改状态。在这种情况下,如果你运气不好,你可能会遇到异常。推理是这些命令运行异步但触摸相同的节点。

潜在解决方案:

1)你可以简单地给第一个操作留出一些时间来完成并执行第二个操作。

2)这需要一些开发工作,但我们走了:

您可以使用LockManager锁定第一个操作正在使用的节点,并在操作完成后将其解锁。同时进行第二次操作将检查节点是否被锁定,如果是,则不会继续,而是等待从第一个进程解锁。