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

JIRA becomes unresponsive when deleting sub-tasks

    XMLWordPrintable

Details

    Description

      Summary

      Deleting sub-tasks with Work logged in JIRA 7, causes JIRA to become unresponsive. The instance becomes unavailable due to HTTP threads being blocked. The instance becomes unusable.

      The atlassian-jira.log report the following:

      2015-11-27 11:21:41,439 http-nio-2975-exec-6 ERROR anonymous 681x4x2 gbwl0p 172.22.48.200 /s/3edd30ca725791e7aac11c253ce2b29f-CDN/en_AU-v00mv4/70107/b6b48b2829824b869586ac216d119363/3d193fefff8c3cf9821346e150766799/_/download/contextbatch/css/atl.dashboard,jira.dashboard,atl.general,atl.global,jira.global,jira.general,-_super/batch.css [o.a.c.c.C.[.[localhost].[/JSP-252975].[file-server]] Servlet.service() for servlet file-server threw exception
      java.lang.RuntimeException: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
      	at com.atlassian.plugin.cache.filecache.impl.StreamsCache.streamFromFile(StreamsCache.java:140)
      	at com.atlassian.plugin.cache.filecache.impl.OneStreamCache.stream(OneStreamCache.java:65)
      	at com.atlassian.plugin.cache.filecache.impl.FileCacheImpl.cache(FileCacheImpl.java:100)
      	at com.atlassian.plugin.webresource.http.Controller$1CachedContentImpl.cache(Controller.java:317)
      	at com.atlassian.plugin.webresource.http.Controller$1CachedContentImpl.writeTo(Controller.java:272)
      	at com.atlassian.plugin.webresource.http.Controller.sendCached(Controller.java:364)
      	at com.atlassian.plugin.webresource.http.Controller.serveResources(Controller.java:179)
      	at com.atlassian.plugin.webresource.http.Controller.serveBatch(Controller.java:78)
      	at com.atlassian.plugin.webresource.http.Router$5.apply(Router.java:97)
      	at com.atlassian.plugin.webresource.http.Router$5.apply(Router.java:89)
      	at com.atlassian.plugin.webresource.support.http.BaseRouter.callHandler(BaseRouter.java:185)
      	at com.atlassian.plugin.webresource.support.http.BaseRouter.dispatch(BaseRouter.java:161)
      	at com.atlassian.plugin.webresource.servlet.PluginResourceDownload.serveFile(PluginResourceDownload.java:67)
      	at com.atlassian.plugin.servlet.AbstractFileServerServlet.doGet(AbstractFileServerServlet.java:33)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
      	... 111 filtered
      	at com.atlassian.jira.plugin.webresource.CachingResourceDownloadRewriteRule$1.execute(CachingResourceDownloadRewriteRule.java:68)
      	at org.tuckey.web.filters.urlrewrite.RewrittenUrlClass.doRewrite(RewrittenUrlClass.java:61)
      	... 60 filtered
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
      	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:393)
      	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426)
      	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:339)
      	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:418)
      	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:406)
      	at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)
      	at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211)
      	at java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:145)
      	at com.atlassian.gzipfilter.GzipResponseStream.write(GzipResponseStream.java:46)
      	at com.atlassian.gzipfilter.RoutableServletOutputStream.write(RoutableServletOutputStream.java:134)
      	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1384)
      	at com.atlassian.plugin.cache.filecache.impl.StreamsCache.streamFromFile(StreamsCache.java:135)
      	... 192 more
      Caused by: java.io.IOException: Broken pipe
      	at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
      	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
      	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
      	at sun.nio.ch.IOUtil.write(IOUtil.java:65)
      	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:470)
      	... 10 filtered
      	... 204 more
      

      Environment

      JIRA 7.0.0

      Steps to Reproduce

      1. Set up an Environment with JIRA 7.0.0 (bug is reproducible on Microsoft SQL Server 11.0.2100).
      2. Create an issue with a sub-task
      3. Create a Work log on that issue
      4. Delete the issue
      5. At this point the Delete fails to respond. the logs will indicate an error: java.lang.RuntimeException: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
      6. Observe that the instance becomes unresponsive and you are unable to access some functions of JIRA as more and more threads get blocked.

      Expected Results

      1. When the issue is deleted, the instance should still be available to users.
      2. http threads should not become blocked.
      3. The removal of the targeted issue should occur.

      Actual Results

      1. JIRA becomes unresponsive.
      2. Many threads become blocked, waiting on cache.

      Verification

      • Many threads will be WAITING similar to the following:
        "http-nio-2975-exec-24" #126 daemon prio=5 tid=0x00007f4f18008000 nid=0x786e waiting on condition [0x00007f4f456dc000]
           java.lang.Thread.State: WAITING (parking)
                at sun.misc.Unsafe.park(Native Method)
                - parking to wait for  <0x00000000fb514400> (a com.google.common.util.concurrent.AbstractFuture$Sync)
        
      • Instance will be very unstable, not responding to requests. But some components may load OK, for example a dashboard
      • Potentially all HTTP threads eventually get stuck waiting and the instance dies.

      Workaround

      • Remove the Delete issues permission from projects if you are using JIRA 7.0.X.
      • If you must provide for deleting issues and are testing JIRA 7 in a pre-production environment, roll back to a previous version of JIRA.

      Attachments

        Issue Links

          Activity

            People

              ohernandez@atlassian.com Oswaldo Hernandez (Inactive)
              majones Matt Jones (Inactive)
              Votes:
              3 Vote for this issue
              Watchers:
              18 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: