As an JIRA Administrator I want to have debug logging for DefaultIndexManager lock (readLock)

XMLWordPrintable

    • 1
    • 3

      Problem Definition

      On high load the NodeReindexServiceThread can fail acquiring the READ lock with the following error. However, it is not saying what thread/process holding the lock

      2017-07-23 00:15:10,552 NodeReindexServiceThread:thread-1 ERROR      [c.a.j.issue.index.DefaultIndexManager] Wait attempt timed out - waited 30000 millis
      econds
      com.atlassian.jira.issue.index.IndexException: Wait attempt timed out - waited 30000 milliseconds
              at com.atlassian.jira.issue.index.DefaultIndexManager.obtain(DefaultIndexManager.java:824)
              at com.atlassian.jira.issue.index.DefaultIndexManager.access$600(DefaultIndexManager.java:90)
              at com.atlassian.jira.issue.index.DefaultIndexManager$IndexLock.tryLock(DefaultIndexManager.java:1166)
              at com.atlassian.jira.issue.index.DefaultIndexManager.getIndexLock(DefaultIndexManager.java:810)
              at com.atlassian.jira.issue.index.DefaultIndexManager.deIndexIssueObjects(DefaultIndexManager.java:763)
              ... 2 filtered
              at java.lang.reflect.Method.invoke(Method.java:498)
              at com.atlassian.jira.config.component.SwitchingInvocationHandler.invoke(SwitchingInvocationHandler.java:22)
              at com.sun.proxy.$Proxy16.deIndexIssueObjects(Unknown Source)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.updateIssueIndex(DefaultNodeReindexService.java:410)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.updateAffectedIndexes(DefaultNodeReindexService.java:298)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.reIndex(DefaultNodeReindexService.java:252)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.dt_access$778(DefaultNodeReindexService.java)
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
              at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
              at java.lang.Thread.run(Thread.java:745) 
      

      Read Lock - DefaultIndexManager

              /**
               * The index read lock. This lock needs to be acquired when updating the index (i.e. adding to it or updating
               * existing documents in the index).
               */
              final IndexLock readLock = new IndexLock(indexLock.readLock()); 
      

      Suggested Solution

      • Log debugging information when DefaultIndexManager failed to acquire the READ lock.

      Workaround

      • None

            Assignee:
            Esteban Casuscelli
            Reporter:
            vkharisma
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: