Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-71577

Cannot delete a linked issue because of a locking session in the database

    XMLWordPrintable

Details

    Description

      Issue Summary

      Issues cannot be deleted if there is/are other linked issue(s) to it.

      Steps to Reproduce

      1. Create issue A
      2. Create issue B (or more)
      3. Link issue B (and others) to issue A
      4. Delete issue A

      Expected Results

      The issue is deleted successfully

      Actual Results

      The issue cannot be deleted. It's timed out on UI. When we review the thread dumps, we see N+1 (N is the number of linked issue to issue A) active threads with the stack trace below:

      "http-nio-8080-exec-40" #669404 daemon prio=5 os_prio=0 tid=0x00007f674006c000 nid=0x1ceb9 runnable [0x00007f66aaed7000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
              at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
              at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
              at sun.nio.ch.IOUtil.read(IOUtil.java:197)
              at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
              - locked <0x0000000506b0a188> (a java.lang.Object)
              at oracle.net.nt.TimeoutSocketChannel.read(TimeoutSocketChannel.java:144)
              at oracle.net.ns.NIOHeader.readHeaderBuffer(NIOHeader.java:82)
              at oracle.net.ns.NIOPacket.readFromSocketChannel(NIOPacket.java:139)
              at oracle.net.ns.NIOPacket.readFromSocketChannel(NIOPacket.java:101)
              at oracle.net.ns.NIONSDataChannel.readDataFromSocketChannel(NIONSDataChannel.java:80)
              at oracle.jdbc.driver.T4CMAREngineNIO.prepareForReading(T4CMAREngineNIO.java:98)
              at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:534)
              at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:485)
              at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
              at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)
              at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)
              at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)
              at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:910)
              at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1119)
              at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)
              at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)
              at oracle.jdbc.driver.OraclePreparedStatement.executeLargeUpdate(OraclePreparedStatement.java:3865)
              - locked <0x0000000506ad62b8> (a oracle.jdbc.driver.T4CConnection)
              at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3845)
              at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1061)
              at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
              at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
              at com.atlassian.jira.ofbiz.sql.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:47)
              at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.lambda$executeUpdate$7(DiagnosticPreparedStatement.java:69)
              at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement$$Lambda$1536/973960306.execute(Unknown Source)
              at com.atlassian.diagnostics.internal.platform.monitor.db.DefaultDatabaseDiagnosticsCollector.recordExecutionTime(DefaultDatabaseDiagnosticsCollector.java:69)
              at com.atlassian.jira.diagnostic.connection.DatabaseDiagnosticsCollectorDelegate.recordExecutionTime(DatabaseDiagnosticsCollectorDelegate.java:55)
              at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.executeUpdate(DiagnosticPreparedStatement.java:69)
              at org.ofbiz.core.entity.jdbc.SQLProcessor.executeUpdate(SQLProcessor.java:562)
              at org.ofbiz.core.entity.GenericDAO.deleteByAnd(GenericDAO.java:1281)
              at org.ofbiz.core.entity.GenericDAO.deleteByAnd(GenericDAO.java:1248)
              at org.ofbiz.core.entity.GenericHelperDAO.removeByAnd(GenericHelperDAO.java:236)
              at org.ofbiz.core.entity.GenericDelegator.removeByAnd(GenericDelegator.java:1334)
              at org.ofbiz.core.entity.GenericDelegator.removeByAnd(GenericDelegator.java:1313)
              at com.atlassian.jira.ofbiz.DefaultOfBizDelegator.removeByAnd(DefaultOfBizDelegator.java:236)
              at com.atlassian.jira.ofbiz.WrappingOfBizDelegator.removeByAnd(WrappingOfBizDelegator.java:131)
              at com.atlassian.jira.issue.link.DefaultIssueLinkManager.removeIssueLinkInternal(DefaultIssueLinkManager.java:176)
              at com.atlassian.jira.issue.link.DefaultIssueLinkManager.deleteIssueLinksFromIssue(DefaultIssueLinkManager.java:261)
              at com.atlassian.jira.issue.link.DefaultIssueLinkManager.removeIssueLinksInternal(DefaultIssueLinkManager.java:243)
              at com.atlassian.jira.issue.link.DefaultIssueLinkManager.removeIssueLinksNoChangeItems(DefaultIssueLinkManager.java:230)
              at com.atlassian.jira.issue.managers.DefaultIssueDeleteHelper.removeIssueLinks(DefaultIssueDeleteHelper.java:188)
              at com.atlassian.jira.issue.managers.DefaultIssueDeleteHelper.deleteIssue(DefaultIssueDeleteHelper.java:136)
              at com.atlassian.jira.issue.managers.DefaultIssueManager.deleteIssue(DefaultIssueManager.java:743)
              at com.atlassian.jira.issue.managers.RequestCachingIssueManager.deleteIssue(RequestCachingIssueManager.java:247)
              at com.atlassian.jira.bc.issue.DefaultIssueService.delete(DefaultIssueService.java:424)
              at com.atlassian.jira.bc.issue.DefaultIssueService.delete(DefaultIssueService.java:400)
              at com.atlassian.jira.web.action.issue.DeleteIssue.doExecute(DeleteIssue.java:23)
              at webwork.action.ActionSupport.execute(ActionSupport.java:165)
              at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63)
              at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:39)
              at webwork.interceptor.NestedInterceptorChain.proceed(NestedInterceptorChain.java:31)
      ...
      ...
      

      There will also be locker sessions in the database with the SQL below:

      Delete from userassociation where Sink_Node_ID= :1 and Sink_Node_Entity = :2;
      

      Workaround

      Delete the locker sessions in the database so that the threads waiting for these locks can continue to delete the issue.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ayanar Alp
              Votes:
              15 Vote for this issue
              Watchers:
              22 Start watching this issue

              Dates

                Created:
                Updated: