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

      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.

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

              Created:
              Updated: