【发布时间】:2016-12-13 15:11:20
【问题描述】:
我正在对多个节点进行更新,然后使用“激活”命令以编程方式发布节点进行批量发布(大量数据),但有时我不知道为什么有时会出错。到目前为止只发生了几次,所以我发现很难弄清楚是什么导致了这个问题。
这是抛出的错误。
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)
有没有人遇到过类似的问题?或者知道从哪里看这个问题?
谢谢! :)
【问题讨论】:
-
我假设您正在使用异步命令,因此一个可能会更改其状态,直到另一个处理此情况。如果您以编程方式执行此操作,我建议您尝试在两者之间设置一些 Thread.sleep() 时间是否有帮助。如果问题确实是时间问题,我们可以做一些事情,比如在操作完成时进行监听等。
-
嗨@Ducaz035,这个命令是异步的吗?我正在执行这个: Command cmd = ((CommandsManager) Components.getComponent(CommandsManager.class)).getCommand("", "activate");上下文 ctx = new SimpleContext();映射参数 = new HashMap(); params.put("repository", workspaceName); params.put("uuid", uuid); params.put("递归", true); ctx.putAll(参数); cmd.execute(ctx);
-
另外,我不太明白到底发生了什么?为什么activationStatus在外部修改?只有一个作者实例,除了这个作者实例之外,没有人接触公共实例。你能帮忙解释一下这可能发生的情况吗?非常感谢!
-
请问哪个版本?
-
@JenSze 澄清一下:您是否更新节点并直接尝试发布它们?我假设节点的更新会改变发布状态(它应该),然后你就有问题了。
标签: magnolia