Invalid use of RequestCache by thread: psmq-lock-lease-renewal

XMLWordPrintable

    • 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:

       

      psmq-lock-lease-renewal-thread ERROR      [c.a.j.cache.request.RequestCacheRecorderImpl] Invalid use of RequestCache by thread/stack: psmq-lock-lease-renewal--xggimt. 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)	at com.atlassian.jira.cache.request.RequestCacheRecorderImpl.recordRequestCacheOOCUsage(RequestCacheRecorderImpl.java:125)	at com.atlassian.jira.cache.request.RequestCacheImpl.get(RequestCacheImpl.java:46)	at com.atlassian.jira.transaction.RequestLocalTransactionRunnableQueueFactoryImpl.getRunnablesQueue(RequestLocalTransactionRunnableQueueFactoryImpl.java:21)	at com.atlassian.jira.transaction.TransactionSupportImpl.begin(TransactionSupportImpl.java:30)	at com.atlassian.jira.transaction.Txn.begin(Txn.java:17)	at com.atlassian.jira.database.DatabaseAccessorImpl.runInManagedTransaction(DatabaseAccessorImpl.java:131)	at jdk.internal.reflect.GeneratedMethodAccessor162.invoke(Unknown Source)	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)	at java.base/java.lang.reflect.Method.invoke(Unknown Source)	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)	at jdk.proxy3/jdk.proxy3.$Proxy147.runInManagedTransaction(Unknown Source)	at jdk.internal.reflect.GeneratedMethodAccessor162.invoke(Unknown Source)	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)	at java.base/java.lang.reflect.Method.invoke(Unknown Source)	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:134)	at jdk.proxy3/jdk.proxy3.$Proxy147.runInManagedTransaction(Unknown Source)	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.runInStartedOrExistingTransaction(JiraHostConnectionAccessor.java:130)	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.execute(JiraHostConnectionAccessor.java:60)	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(DefaultTransactionalExecutor.java:65)	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67)	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:43)	at com.atlassian.psmq.internal.io.TxnBoundaryAutoCommit.run(TxnBoundaryAutoCommit.java:23)	at com.atlassian.psmq.internal.queue.QueueOperationsImpl.heartBeatQueue(QueueOperationsImpl.java:144)	at com.atlassian.psmq.internal.QSessionImpl$1.heartBeatQueue(QSessionImpl.java:141)	at com.atlassian.psmq.internal.queue.QueueHeartbeatRenewerImpl$RenewalTask.run(QueueHeartbeatRenewerImpl.java:125)	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)	at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)	at java.base/java.lang.Thread.run(Unknown Source)

       

       

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available

              Assignee:
              Unassigned
              Reporter:
              Ankit Pruthi
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: