gpt4 book ai didi

java - 并发 API LayoutLocalService.addLayout 在 LayoutSetLocalService 中抛出 StaleObjectStateException

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:57 25 4
gpt4 key购买 nike

更新

Liferay 票证已接受,开发中的解决方案:https://issues.liferay.com/browse/LPS-82954

情况

我的上下文是通过 liferay portlet 并行导入 liferay 布局;用 Spring 构建。当我在 Liferay dxp 中执行它时;添加布局的 api 调用会抛出 StaleObjectStateException。 (https://github.com/liferay/liferay-portal/blob/d969e0e839db9ea64267f7bff0a76be93cd26fa0/portal-impl/src/com/liferay/portal/service/impl/LayoutLocalServiceImpl.java)

当 API 在内部对相应的 LayoutSet 进行更新(更新该组的 PageCount,布局刚刚添加到其中)时,会发生此异常。

这不会发生在单线程执行中!

操作

  1. 首先我同步了该调用..没有任何更好的结果
  2. 同时我读到了一些内容,仅同步线程不会有帮助,因为事务本身可能不在同步执行 block 内。因此我还添加了事务注释。 ..没有更好的结果

到目前为止,我获得了以下见解:

代码摘录

-> 可用测试项目:https://github.com/andrebiegel/liferay-layout-issue.git

private static final Object layoutCreationLock = new Object();
synchronized (layoutCreationLock) {
newLayout = addLayoutApiCall(pageContext, serviceContext, typeSettings, friendlyURLMap);
}





@Transactional(propagation = Propagation.REQUIRES_NEW)
public Layout addLayoutApiCall(IPageContext pageContext, ServiceContext serviceContext, String typeSettings,
Map<Locale, String> friendlyURLMap) throws PortalException {
Layout newLayout;
newLayout = LayoutLocalServiceUtil.addLayout( pageContext.getProjectConfiguration().getUserId(), pageContext.getProjectConfiguration()
.getSiteId(), pageContext.isPrivatePage(), pageContext.getParentLayoutId(), pageContext
.getNamesMap(), pageContext.getTitleMap(), pageContext.getDescriptionMap(), pageContext
.getKeywordsMap(), pageContext.getRobotsMap(), pageContext.getPageType(), typeSettings,
pageContext.isHiddenPage(), friendlyURLMap, serviceContext );
return newLayout;
}

最佳答案

不幸的是,Liferay 不会修复这个问题。票已关闭;声明为不是用例。原因是该解决方案在其他用例中产生了负面后果。所以Liferay的交易管理似乎存在问题。顺便说一下,我在同时添加 Expandos 时也看到过这样的异常。

关于java - 并发 API LayoutLocalService.addLayout 在 LayoutSetLocalService 中抛出 StaleObjectStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com