Java hybris应用程序中的堆栈溢出问题

Java hybris应用程序中的堆栈溢出问题,java,hybris,Java,Hybris,我们有时会遇到堆栈溢出错误。(无法在本地系统中复制) 下面是错误文件中的日志: error getting de.hybris.platform.jalo.user.UserGroup.members : null INFO | jvm 1 | main | 2016/12/15 13:28:51.599 | [mde.hybris.platform.jalo.JaloSystemException: error getting de.hybris.platform.jalo.u

我们有时会遇到堆栈溢出错误。(无法在本地系统中复制)

下面是错误文件中的日志:

error getting de.hybris.platform.jalo.user.UserGroup.members : null
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 | [mde.hybris.platform.jalo.JaloSystemException: error getting de.hybris.platform.jalo.user.UserGroup.members : null[HY-0]
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.jalo.type.ReflectionAttributeAccess$AttributeMethod.invokeGetter(ReflectionAttributeAccess.java:770)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.jalo.type.ReflectionAttributeAccess.getValue(ReflectionAttributeAccess.java:925)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.jalo.Item.getAttribute(Item.java:1840)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter.readSingleAttribute(ItemModelConverter.java:1157)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.servicelayer.internal.converter.impl.ItemAttributeProvider.getAttribute(ItemAttributeProvider.java:101)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.servicelayer.model.ItemModelContextImpl.loadUnlocalizedAttribute(ItemModelContextImpl.java:236)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.servicelayer.model.ItemModelContextImpl.getValue(ItemModelContextImpl.java:227)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.599 |     at de.hybris.platform.core.model.security.PrincipalGroupModel.getMembers(PrincipalGroupModel.java:148)

INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at java.lang.Thread.run(Thread.java:745)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 | Caused by: java.lang.StackOverflowError
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at java.lang.String.toUpperCase(String.java:2833)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.FromClause.translateNested(FromClause.java:58)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.ParsedText$2.translate(ParsedText.java:269)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.FlexibleSearchTools.replace(FlexibleSearchTools.java:310)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.ParsedText.translate(ParsedText.java:263)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.FromClause.translate(FromClause.java:48)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.ParsedQuery.translate(ParsedQuery.java:401)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.ParsedQuery.getTranslatedQuery(ParsedQuery.java:181)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.QueryParser.translateQuery(QueryParser.java:229)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.translate(FlexibleSearch.java:2007)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.search(FlexibleSearch.java:1412)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.link.LinkManager.getLinkedItems(LinkManager.java:422)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.link.LinkManager.getLinkedItems(LinkManager.java:368)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.link.LinkManager.getLinkedItems(LinkManager.java:338)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.link.LinkManager.getLinkedItems(LinkManager.java:249)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.security.PrincipalGroup$1.compute(PrincipalGroup.java:85)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.cache.AbstractCacheUnit.privateGetNoLock(AbstractCacheUnit.java:302)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.cache.AbstractCacheUnit.privateGet(AbstractCacheUnit.java:275)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.cache.AbstractCacheUnit.get(AbstractCacheUnit.java:182)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.JaloTypeCacheUnit.getCached(JaloTypeCacheUnit.java:86)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.security.PrincipalGroup.getMembers(PrincipalGroup.java:96)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.user.UserManager.loadAllAdminUserPKs(UserManager.java:1090)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.user.UserManager.isAdminNoCache(UserManager.java:1047)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.user.UserManager.isAdmin(UserManager.java:1018)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.user.User.isAdmin(User.java:1075)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.getUserFilters(FlexibleSearch.java:1891)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.getQueryFilters(FlexibleSearch.java:1047)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.typecache.impl.DefaultFlexibleSearchTypeCacheProvider.getQueryFilters(DefaultFlexibleSearchTypeCacheProvider.java:185)
INFO   | jvm 1    | main    | 2016/12/15 13:28:51.600 |     at de.hybris.platform.persistence.flexiblesearch.ParsedType.createParsedSubtypesAndRestrictionClauses(ParsedType.java:187)

可能的问题是什么?

此错误可能是由于递归调用未正确终止而出现的。根据您发布的stacktrace,您可能在代码中的某个地方以递归方式调用PrincipalGroupModel.getMembers。

此问题在较低的环境中不会得到复制。但有时应用程序会在出现此问题时停止运行。我会尝试在SAP社区中查找此问题的更多特定用户。(因为这里只有586个标签的追随者;)到目前为止还有多少人处于活动状态)有什么根本原因吗?它并不是经常复制的。如果这是由于代码(调用递归)造成的,那么它将一直复制。这是一个非常昂贵的过程,只有在可用资源刚好足以正确执行的情况下才会失败。这意味着,如果其他线程(进程)使用有限的资源导致此“随机”错误,则此操作可能会失败。