-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
None
-
Affects Version/s: 10.3.22
-
Component/s: Data Center - Other
-
None
-
10.03
-
1
-
Severity 3 - Minor
Issue Summary
See JRASERVER-72963#comment-3059444 for more details.
Note: There is a whole family of "Invalid use of RequestCache by thread..." issues, one per thread. Find the one you need or file a new one.
Steps to Reproduce
Exact steps are unknown. Start Jira and after some time this error might be logged.
Expected Results
RequestCache is used inside a context and no error is logged.
Actual Results
RequestCache is used outside of a context, which risks an incorrect cache behaviour.
The following error appears in atlassian-jira.log file:
pool-40-thread-159 ERROR [jira.cache.request.RequestCacheRecorderImpl] Invalid use of RequestCache by thread/stack: pool-40-thread--k1ezbs. Incorrect usage of JIRA API. You can only create/use: RequestCacheImpl inside a context (request or Jira-Thread-Local). Check JiraThreadLocalUtil and http://go/j/JRASERVER-72963 for details. This message will be logged once per thread/stacktrace. This ERROR should be fixed on the caller side (check the stack-trace or thread-name) as it is causing inconsistent data.com.atlassian.jira.cache.request.RequestCacheRecorderImpl$StackCollector: Stack trace of invalid RequestCache usage at com.atlassian.jira.cache.request.RequestCacheRecorderImpl$ExceptionPoint.errorLogOOCThreadUsage(RequestCacheRecorderImpl.java:56) ~[classes/:?] at com.atlassian.jira.cache.request.RequestCacheRecorderImpl.recordRequestCacheOOCUsage(RequestCacheRecorderImpl.java:125) ~[classes/:?] at com.atlassian.jira.cache.request.RequestCacheImpl.get(RequestCacheImpl.java:46) ~[classes/:?] at com.atlassian.jira.security.DefaultGlobalPermissionManager.hasPermissionIgnoreRecovery(DefaultGlobalPermissionManager.java:346) ~[classes/:?] at com.atlassian.jira.security.DefaultGlobalPermissionManager.hasPermission(DefaultGlobalPermissionManager.java:297) ~[classes/:?] at com.atlassian.jira.security.ApplicationRequiredPermissionManager.shouldUserHaveAccess(ApplicationRequiredPermissionManager.java:214) ~[classes/:?] at com.atlassian.jira.security.ApplicationRequiredPermissionManager.checkUserHasApplicationOrFalse(ApplicationRequiredPermissionManager.java:189) ~[classes/:?] at com.atlassian.jira.security.ApplicationRequiredPermissionManager.checkUserHasApplicationOrFalse(ApplicationRequiredPermissionManager.java:183) ~[classes/:?] at com.atlassian.jira.security.ApplicationRequiredPermissionManager.hasPermission(ApplicationRequiredPermissionManager.java:80) ~[classes/:?] at com.atlassian.jira.security.PublicAccessPermissionManager.lambda$hasPermission$0(PublicAccessPermissionManager.java:75) ~[classes/:?] at com.atlassian.jira.security.PublicAccessPermissionManager.checkPublicAccessEnabledOrDelegate(PublicAccessPermissionManager.java:179) ~[classes/:?] at com.atlassian.jira.security.PublicAccessPermissionManager.hasPermission(PublicAccessPermissionManager.java:75) ~[classes/:?] at jdk.internal.reflect.GeneratedMethodAccessor1422.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?] at com.atlassian.jira.config.component.SwitchingInvocationHandler.invoke(SwitchingInvocationHandler.java:38) ~[classes/:?] at jdk.proxy3.$Proxy76.hasPermission(Unknown Source) ~[?:?] at com.atlassian.jira.issue.fields.renderer.wiki.links.JiraIssueLink.canCurrentUserSeeIssue(JiraIssueLink.java:66) ~[classes/:?] at com.atlassian.jira.issue.fields.renderer.wiki.links.JiraIssueLink.setupIssueLink(JiraIssueLink.java:38) ~[classes/:?] at com.atlassian.jira.issue.fields.renderer.wiki.links.JiraIssueLink.<init>(JiraIssueLink.java:29) ~[classes/:?] at com.atlassian.jira.issue.fields.renderer.wiki.resolvers.JiraIssueLinkResolver.createContentLink(JiraIssueLinkResolver.java:18) ~[classes/:?] at com.atlassian.jira.issue.fields.renderer.wiki.links.JiraLinkResolver.createLink(JiraLinkResolver.java:57) ~[classes/:?] at com.atlassian.renderer.v2.components.LinkRendererComponent.appendLink(LinkRendererComponent.java:105) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.components.LinkRendererComponent.renderHeavy(LinkRendererComponent.java:88) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.components.LinkRendererComponent.render(LinkRendererComponent.java:59) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:45) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.V2SubRenderer.render(V2SubRenderer.java:36) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.components.block.BlockRendererComponent.renderParagraph(BlockRendererComponent.java:196) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.components.block.BlockRendererComponent.flushParagraph(BlockRendererComponent.java:191) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.components.block.BlockRendererComponent.render(BlockRendererComponent.java:108) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:45) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.TokenEscapingV2Renderer.render(TokenEscapingV2Renderer.java:28) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.renderer.v2.V2RendererFacade.convertWikiToXHtml(V2RendererFacade.java:87) ~[atlassian-renderer-9.0.3.jar:?] at com.atlassian.jira.issue.fields.renderer.wiki.AtlassianWikiRenderer.render(AtlassianWikiRenderer.java:58) ~[classes/:?] at com.atlassian.jira.issue.managers.DefaultRendererManager.getRenderedContent(DefaultRendererManager.java:95) ~[classes/:?] at jdk.internal.reflect.GeneratedMethodAccessor1753.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?] at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) ~[atlassian-plugins-core-8.1.8.jar:?] at jdk.proxy3.$Proxy414.getRenderedContent(Unknown Source) ~[?:?] at jdk.internal.reflect.GeneratedMethodAccessor1753.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?] at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:134) ~[?:?] at jdk.proxy3.$Proxy414.getRenderedContent(Unknown Source) ~[?:?] at com.atlassian.mywork.providers.jira.JiraEventListener.renderComment(JiraEventListener.java:344) ~[?:?] at com.atlassian.mywork.providers.jira.JiraEventListener.commentedOnItem(JiraEventListener.java:325) ~[?:?] at com.atlassian.mywork.providers.jira.JiraEventListener.lambda$new$1(JiraEventListener.java:67) ~[?:?] at com.atlassian.mywork.providers.jira.JiraEventListener.lambda$onIssueEvent$3(JiraEventListener.java:163) ~[?:?] at com.atlassian.mywork.providers.jira.JiraEventListener.lambda$handleEventWithTargetServiceCheck$6(JiraEventListener.java:188) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?] at java.util.concurrent.FutureTask.run(Unknown Source) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?] at java.lang.Thread.run(Unknown Source) [?:?]
Workaround
Currently there is no known workaround for this behavior. A workaround will be added here when available