Uploaded image for project: 'Jira Software Data Center'
  1. Jira Software Data Center
  2. JSWSERVER-26314

Invalid use of RequestCache by thread: jira-stats (DVCSMessageCountByStateStats)

      Issue Summary

      DVCSMessageCountByStateStats uses RequestCache outside of a context.

      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:

      1912-06-23 00:00:00,000+0000 jira-stats-0 ERROR      [c.a.j.cache.request.RequestCacheRecorderImpl] Invalid use of RequestCache by thread: jira-stats.Incorrect usage of JIRA API. You can only create/use: RequestCacheImpl inside a context (request or Jira-Thread-Local). Check: JiraThreadLocalUtil for details. This message will be logged once per thread. This ERROR should be fixed on the caller side (check the stack-trace or thread-name) as it is causing inconsistent data.
      java.lang.Throwable
      	at com.atlassian.jira.cache.request.RequestCacheRecorderImpl.errorLogOOCThreadUsage(RequestCacheRecorderImpl.java:32)
      	at com.atlassian.jira.cache.request.RequestCacheRecorderImpl.recordRequestCacheOOCUsage(RequestCacheRecorderImpl.java:25)
      	at com.atlassian.jira.cache.request.RequestCacheImpl.get(RequestCacheImpl.java:47)
      	at com.atlassian.jira.config.feature.DefaultFeatureManager.isFlagEnabledByExternalActivator(DefaultFeatureManager.java:331)
      	at com.atlassian.jira.config.feature.DefaultFeatureManager.isEnabled(DefaultFeatureManager.java:116)
      	at jdk.internal.reflect.GeneratedMethodAccessor128.invoke(Unknown Source)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
      	at com.sun.proxy.$Proxy645.isEnabled(Unknown Source)
      	at jdk.internal.reflect.GeneratedMethodAccessor128.invoke(Unknown Source)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:130)
      	at com.sun.proxy.$Proxy645.isEnabled(Unknown Source)
      	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.execute(JiraHostConnectionAccessor.java:59)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(DefaultTransactionalExecutor.java:61)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:53)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:37)
      	at com.atlassian.jira.plugins.dvcs.dao.impl.querydsl.MessageQueueItemDaoQueryDsl.getMessageQueueItemCountByState(MessageQueueItemDaoQueryDsl.java:372)
      	at com.atlassian.jira.plugins.dvcs.stats.DVCSMessageCountByStateStats.getValueForSerialization(DVCSMessageCountByStateStats.java:19)
      	at com.atlassian.jira.plugins.dvcs.stats.DVCSMessageCountByStateStats.getValueForSerialization(DVCSMessageCountByStateStats.java:9)
      	at com.atlassian.jira.util.stats.GsonStatsSerializer.lambda$buildGson$3(GsonStatsSerializer.java:46)
      	at com.google.gson.TreeTypeAdapter.write(TreeTypeAdapter.java:70)
      	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
      	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
      	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
      	at com.google.gson.Gson.toJson(Gson.java:581)
      	at com.google.gson.Gson.toJsonTree(Gson.java:474)
      	at com.google.gson.Gson.toJsonTree(Gson.java:453)
      	at com.atlassian.jira.util.stats.GsonStatsSerializer.serialize(GsonStatsSerializer.java:28)
      	at com.atlassian.jira.util.stats.JiraStats.log(JiraStats.java:468)
      	at com.atlassian.jira.util.stats.JiraStats.printAndReset(JiraStats.java:418)
      	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
      	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:834)
      

      Workaround

      No workaround is required. This message will be logged only once for this thread.

      It is advised not to turn off logging for RequestCacheRecorderImpl to avoid losing insight into this problem.

            [JSWSERVER-26314] Invalid use of RequestCache by thread: jira-stats (DVCSMessageCountByStateStats)

            There are no comments yet on this issue.

              Unassigned Unassigned
              allewellyn@atlassian.com Alex [Atlassian,PSE]
              Affected customers:
              0 This affects my team
              Watchers:
              2 Start watching this issue

                Created:
                Updated: