-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
None
-
Affects Version/s: 11.3.8, 10.3.22
-
Component/s: Data Center - Other
-
None
-
10.03
-
1
-
Severity 3 - Minor
Issue Summary
com.atlassian.troubleshooting.plugin.ClassNamePluginMapService invokes JiraDarkFeaturesManager.getFeaturesEnabledForCurrentUser() from a scheduled background thread (atst-classname-plugin-map-refresh) without a proper Jira request context. This causes RequestCacheImpl to detect out-of-context usage and log an ERROR, as documented in JRASERVER-72963.
Steps to Reproduce
- Run Jira Data Center with the Atlassian Troubleshooting and Support Tools plugin active (bundled, cannot be disabled without losing Support ZIP functionality).
- Wait for the scheduled background task atst-classname-plugin-map-refresh to execute.
- Observe the following ERROR in atlassian-jira.log.
2026-07-15 11:55:04,924+0200 atst-classname-plugin-map-refresh ERROR [c.a.j.cache.request.RequestCacheRecorderImpl] Invalid use of RequestCache by thread/stack: atst-classname-plugin-map-bfv0p. 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 c.a.j.cache.request.RequestCacheRecorderImpl$ExceptionPoint .errorLogOOCThreadUsage(RequestCacheRecorderImpl.java:56) at c.a.j.cache.request.RequestCacheRecorderImpl .recordRequestCacheOOCUsage(RequestCacheRecorderImpl.java:125) at com.atlassian.jira.cache.request.RequestCacheImpl.get(RequestCacheImpl.java:92) at c.a.j.config.feature.DefaultFeatureManager .getDarkFeatures(DefaultFeatureManager.java:183) at c.a.j.config.feature.DefaultFeatureManager .getDarkFeatures(DefaultFeatureManager.java:178) ... at com.atlassian.sal.jira.features.JiraDarkFeaturesManager .getFeaturesEnabledForCurrentUser(JiraDarkFeaturesManager.java:149) ... at com.atlassian.troubleshooting.CommonFeatureFlags .isFeatureFlagEnabled(CommonFeatureFlags.java:90) at com.atlassian.troubleshooting.plugin.ClassNamePluginMapService .isMapGenerationEnabled(ClassNamePluginMapService.java:203) at com.atlassian.troubleshooting.plugin.ClassNamePluginMapService .refreshCache(ClassNamePluginMapService.java:180) at com.atlassian.troubleshooting.plugin.ClassNamePluginMapService .lambda$newMapRefreshTask$0(ClassNamePluginMapService.java:164) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask .run(ScheduledThreadPoolExecutor.java:304) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.lang.Thread.run(Thread.java:1583)
Expected Results
The scheduled atst-classname-plugin-map-refresh task runs without producing RequestCache out-of-context errors. Feature flag checks performed from background threads must not rely on RequestCacheImpl without initialising the required context.
Actual Results
An ERROR is logged on every execution of the background task. While Jira throttles this to one log entry per thread/stacktrace per node, it produces continuous noise.
Workaround
Currently there is no known workaround for this behavior. A workaround will be added here when available.
- was split from
-
JRASERVER-72963 Logs of usage of RequestCache without context from the com.atlassian.jira.cache.request.RequestCacheRecorderImpl package in the logs
-
- Closed
-