Details
-
Bug
-
Resolution: Won't Fix
-
Low
-
33
-
Severity 3 - Minor
-
Description
NOTE: This bug report is for JIRA Cloud. Using JIRA Server? See the corresponding bug report.
Summary
This is a logging bug. There seems to be no functional problem from the UI side.
When clicking on an mp4 attachment, it will play the video in the web browser with no indication of any problem, but JIRA logs a ClientAbortException.
- This doesn't seem to happen for small files that are less than 1 MB (rought estimate)
- For files that are a couple MB in size, it happens upon first request, but not after. I believe this is because of caching
- I've been able to always reproduce this with larger files of great than a couple hundred MB
Environment
Reproducible on the browsers below:
- Chrome 42.0.2311.135 (64-bit)
- Safari 7.1 (9537.85.10.17.1)
The error does not happen when streaming the video on Firefox 37.0.2.
Steps to Reproduce
- Upload a .mp4 video file to an issue ticket (e.g. SampleVideo_360x240_5mb.mp4).
- Use larger files for best results
- Click on the video, which will cause it to start playing in your web browser
Expected Results
No errors are written to the logs.
Actual Results
The errors below will be written to the JIRA logs:
catalina.out or atlassian-jira.log:
2015-03-27 16:02:54,535 http-bio-8080-exec-5 ERROR admin 962x252x1 1g0nbm1 0:0:0:0:0:0:0:1 /secure/attachment/23200/test-video .mp4 [jira.web.servlet.ViewAttachmentServlet] Error serving file for path /23200/test-video.mp4: com.atlassian.jira.exception.DataAccessException: ClientAbortException: java.net.SocketException: Broken pipe com.atlassian.jira.issue.attachment.AttachmentReadException: com.atlassian.jira.exception.DataAccessException: ClientAbortException: java.net.SocketException: Broken pipe at com.atlassian.jira.issue.attachment.DefaultAttachmentStore$3.call(DefaultAttachmentStore.java:197) at com.atlassian.util.concurrent.Executors$DefaultSubmitter$CallableRunner.run(Executors.java:62) at com.atlassian.util.concurrent.LimitedExecutor$Runner.run(LimitedExecutor.java:93) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: com.atlassian.jira.exception.DataAccessException: ClientAbortException: java.net.SocketException: Broken pipe at com.atlassian.jira.issue.managers.DefaultAttachmentManager$2.get(DefaultAttachmentManager.java:572) at com.atlassian.jira.issue.managers.DefaultAttachmentManager$2.get(DefaultAttachmentManager.java:562) at com.atlassian.util.concurrent.Functions$ToGoogleAdapter.apply(Functions.java:131) at com.atlassian.jira.issue.attachment.DefaultAttachmentStore$3.call(DefaultAttachmentStore.java:193) ... 5 more Caused by: ClientAbortException: java.net.SocketException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:432) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:420) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1026) at org.apache.commons.io.IOUtils.copy(IOUtils.java:999) at com.atlassian.jira.web.servlet.AbstractViewFileServlet$1.withInputStream(AbstractViewFileServlet.java:105) at com.atlassian.jira.web.servlet.AbstractViewFileServlet$1.withInputStream(AbstractViewFileServlet.java:95) at com.atlassian.jira.issue.managers.DefaultAttachmentManager$2.get(DefaultAttachmentManager.java:568) ... 8 more Caused by: java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) at java.net.SocketOutputStream.write(SocketOutputStream.java:159) at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84) at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192) at org.apache.coyote.Response.doWrite(Response.java:499) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:402) ... 18 more
localhost-<DATE>.log:
May 06, 2015 10:11:36 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [viewattachment] in context with path [/jira641] threw exception [com.atlassian.jira.issue.attachment.AttachmentReadException: com.atlassian.jira.exception.DataAccessException: ClientAbortException: java.net.SocketException: Broken pipe] with root cause java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) at java.net.SocketOutputStream.write(SocketOutputStream.java:159) at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84) at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192) at org.apache.coyote.Response.doWrite(Response.java:499) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:402) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:432) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:420) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91) at net.bull.javamelody.FilterServletOutputStream.write(FilterServletOutputStream.java:83) at net.bull.javamelody.CounterResponseStream.write(CounterResponseStream.java:82) at com.atlassian.gzipfilter.RoutableServletOutputStream.write(RoutableServletOutputStream.java:118) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1026) at org.apache.commons.io.IOUtils.copy(IOUtils.java:999) at com.atlassian.jira.web.servlet.AbstractViewFileServlet$1.withInputStream(AbstractViewFileServlet.java:108) at com.atlassian.jira.web.servlet.AbstractViewFileServlet$1.withInputStream(AbstractViewFileServlet.java:98) at com.atlassian.jira.issue.managers.DefaultAttachmentManager$8.get(DefaultAttachmentManager.java:874) at com.atlassian.jira.issue.managers.DefaultAttachmentManager$8.get(DefaultAttachmentManager.java:868) at com.atlassian.jira.issue.attachment.store.DefaultFileSystemAttachmentStore$2.get(DefaultFileSystemAttachmentStore.java:145) at com.atlassian.jira.issue.attachment.store.DefaultFileSystemAttachmentStore$2.get(DefaultFileSystemAttachmentStore.java:141) at com.atlassian.jira.issue.attachment.store.DefaultFileSystemAttachmentStore$3.call(DefaultFileSystemAttachmentStore.java:178) at com.atlassian.util.concurrent.Executors$DefaultSubmitter$CallableRunner.run(Executors.java:62) at com.atlassian.util.concurrent.LimitedExecutor$Runner.run(LimitedExecutor.java:93) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
Notes
Instances using APR (Apache Portable Runtime) will have a slightly different stack trace. The problem is still reproducible in those environments though.
Attachments
Issue Links
- is related to
-
JRASERVER-42668 An mp4 attachment causes an error in the logs despite playing fine in the browser
- Gathering Impact