|
Our server logs are full with the following exception:
@4000000047afaa83378007dc com.atlassian.user.impl.RepositoryException: org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Could not execute query; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; can't create statement from closed connection.; nested exception is java.sql.SQLException: can't create statement from closed connection. @4000000047afaa833780177c at com.atlassian.user.impl.hibernate.HibernateUserManager.getUser(HibernateUserManager.java:123) @4000000047afaa833780d2fc at com.atlassian.user.impl.hibernate.properties.HibernatePropertySetFactory.getPropertySet(HibernatePropertySetFactory.java:52) @4000000047afaa833780dacc at com.atlassian.user.impl.hibernate.properties.HibernatePropertySetFactory.getPropertySet(HibernatePropertySetFactory.java:34) @4000000047afaa83378109ac at com.atlassian.user.impl.cache.properties.CachingPropertySetFactory.getPropertySet(CachingPropertySetFactory.java:28) @4000000047afaa833781117c at com.atlassian.user.impl.delegation.properties.DelegatingPropertySetFactory.getPropertySet(DelegatingPropertySetFactory.java:34) @4000000047afaa833781194c at bucket.user.DefaultUserAccessor.isDeactivated(DefaultUserAccessor.java:663) @4000000047afaa83378134a4 at sun.reflect.GeneratedMethodAccessor174.invoke(Unknown Source) @4000000047afaa8337813c74 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) @4000000047afaa833781405c at java.lang.reflect.Method.invoke(Method.java:585) @4000000047afaa833781482c at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287) @4000000047afaa8337815f9c at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181) @4000000047afaa8337816b54 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148) @4000000047afaa8337817324 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) @4000000047afaa8337819a34 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) @4000000047afaa833781a5ec at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176) @4000000047afaa833781a9d4 at $Proxy19.isDeactivated(Unknown Source) @4000000047afaa833781b1a4 at com.atlassian.confluence.security.DefaultSpacePermissionManager.hasPermission(DefaultSpacePermissionManager.java:68) @4000000047afaa833781ccfc at com.atlassian.confluence.security.SpacePermissionCheckDispatcherCoordinator.hasPermission(SpacePermissionCheckDispatcherCoordinator.java:31) @4000000047afaa833781d4cc at sun.reflect.GeneratedMethodAccessor200.invoke(Unknown Source) @4000000047afaa833781dc9c at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) @4000000047afaa833781f40c at java.lang.reflect.Method.invoke(Method.java:585) coming from: @4000000047afaa833783d09c at com.atlassian.confluence.contributors.macro.ContributorsMacro.execute(ContributorsMacro.java:246) @4000000047afaa833783d86c at com.atlassian.renderer.v2.macro.ResourceAwareMacroDecorator.execute(ResourceAwareMacroDecorator.java:45) @4000000047afaa833783e03c at com.atlassian.renderer.v2.components.MacroRendererComponent.processMacro(MacroRendererComponent.java:254) @4000000047afaa833783e80c at com.atlassian.renderer.v2.components.MacroRendererComponent.makeMacro(MacroRendererComponent.java:150) @4000000047afaa833783ff7c at com.atlassian.renderer.v2.components.WikiContentRendererHandler.handleMacro(WikiContentRendererHandler.java:18) @4000000047afaa8337840b34 at com.atlassian.renderer.v2.WikiMarkupParser.makeMacro(WikiMarkupParser.java:126) @4000000047afaa8337840f1c at com.atlassian.renderer.v2.WikiMarkupParser.makeMacro(WikiMarkupParser.java:114) @4000000047afaa83378416ec at com.atlassian.renderer.v2.WikiMarkupParser.handlePotentialMacro(WikiMarkupParser.java:99) @4000000047afaa8337843244 at com.atlassian.renderer.v2.WikiMarkupParser.parse(WikiMarkupParser.java:60) @4000000047afaa833784362c at com.atlassian.renderer.v2.components.MacroRendererComponent.render(MacroRendererComponent.java:46) @4000000047afaa8337846124 at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:53) @4000000047afaa83378468f4 at com.atlassian.renderer.v2.V2RendererFacade.convertWikiToXHtml(V2RendererFacade.java:57) I'm not certain whether permissionManager.getPermittedEntities results in a big performance hit. With large number of pages this is certainly possible. I had to disable the plugin on our hosted instance due to performance issues related to the database connections. Changed the priority to critical since it affects the whole system.
I have disabled the plugin on EAC and on CAC as well until a solution is found. We didn't experience any problems so far because the plugin is not used anyway, but in case someone would use it - i will rather be on the safe side with our production systems
I came across this plugin in a support case, where it was causing lots of problems in a large instance of Confluence.
The main problem with the implementation is that the PageSearchHelper isn't using the search index. In some cases, it can retrieve an insane amount of data from the database in order to answer its queries. This class needs to be rewritten to use the SmartListManager and ListQuerys to work efficiently in large instances. We have a ContentPermissionsFilter which can be used to restrict access to search results efficiently. See the SearchQueryBean in Confluence for a sample implementation, and how we do our queries effectively for labels, pages, blogs, etc. |
|||||||||||||||||||||||||||||||||||||||||||||||||||
at $Proxy32.getPermittedEntities(Unknown Source)
at com.atlassian.confluence.contributors.macro.ContributorsSummaryMacro.execute(ContributorsSummaryMacro.java:324)
It looks like it got into this line (line numbers don't match up in latest version in svn)
The performance of the contributors plugin is pretty bad to begin with and is not really suited to large page sets, but if there was a big enough list of pages could that cause a problem with permissionManager.getPermittedEntities ?