Invalid use of RequestCache by thread: atst-classname-plugin-map-refresh (ClassNamePluginMapService)

XMLWordPrintable

    • 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

      1. Run Jira Data Center with the Atlassian Troubleshooting and Support Tools plugin active (bundled, cannot be disabled without losing Support ZIP functionality).
      1. Wait for the scheduled background task atst-classname-plugin-map-refresh to execute.
      1. 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.

              Assignee:
              Unassigned
              Reporter:
              Saima Ali Sayyed
              Votes:
              4 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: