Tubería Rota
Estimados:
Tengo una aplicación en java, la cual está instalada en 03 glassfish v3, los cuales están balanceados mediante el mod_proxy mediante apache como front-end. Ahora bien, cada cierto tiempo en los log de los servidores me está apareciendo el siguiente error:
[#|2014-06-22T09:20:32.242-0400|SEVERE|glassfish3.1.2|papeleta.PdfHandler|_ThreadID=178;_ThreadName=Thread-2;|DocumentException: DocumentException: ExceptionConverter: org.apache.catalina.connector.ClientAbortException: java.io.IOException: TuberÃa rota
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:430)
at com.sun.grizzly.util.buf.ByteChunk.append(ByteChunk.java:385)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:455)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:442)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:160)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at com.lowagie.text.pdf.OutputStreamCounter.write(OutputStreamCounter.java:160)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:154)
at com.lowagie.text.pdf.PdfStream.toPdf(PdfStream.java:307)
at com.lowagie.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObject.java:167)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:370)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:350)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:303)
at com.lowagie.text.pdf.PdfWriter.addToBody(PdfWriter.java:1991)
at com.lowagie.text.pdf.PdfWriter.add(PdfWriter.java:1040)
at com.lowagie.text.pdf.PdfWriter.addDirectImageSimple(PdfWriter.java:1015)
at com.lowagie.text.pdf.PdfWriter.addDirectImageSimple(PdfWriter.java:940)
at com.lowagie.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1204)
at com.lowagie.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1107)
at com.lowagie.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1091)
at com.lowagie.text.pdf.PdfDocument.add(PdfDocument.java:2022)
at com.lowagie.text.pdf.PdfDocument.add(PdfDocument.java:1989)
at papeleta.PdfHandler.onStartPage(PapeletaPdfServlet.java:110)
at com.lowagie.text.pdf.PdfDocument.initPage(PdfDocument.java:2279)
at com.lowagie.text.pdf.PdfDocument.newPage(PdfDocument.java:836)
at com.lowagie.text.pdf.PdfDocument.addPTable(PdfDocument.java:1000)
at com.lowagie.text.pdf.PdfDocument.add(PdfDocument.java:1904)
at com.lowagie.text.Document.add(Unknown Source)
at papeleta.PapeletaPdfServlet.processRequest(PapeletaPdfServlet.java:2736)
at papeleta.PapeletaPdfServlet.doGet(PapeletaPdfServlet.java:2757)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at cl.zeke.armada.msa.filtro.FiltroTicket.doFilter(FiltroTicket.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: TuberÃa rota
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:487)
at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:108)
at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:76)
at com.sun.grizzly.http.SocketChannelOutputBuffer.flushChannel(SocketChannelOutputBuffer.java:426)
at com.sun.grizzly.http.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:498)
at com.sun.grizzly.http.SocketChannelOutputBuffer.realWriteBytes0(SocketChannelOutputBuffer.java:382)
at com.sun.grizzly.http.SocketChannelOutputBuffer.realWriteBytes(SocketChannelOutputBuffer.java:364)
at com.sun.grizzly.tcp.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:894)
at com.sun.grizzly.tcp.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:167)
at com.sun.grizzly.tcp.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:661)
at com.sun.grizzly.tcp.Response.doWrite(Response.java:685)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:425)
... 60 more
|#]
Ahora bien, averiguando en este sentido alguien por ahí comentó que puede ser un problema de "keep-alive" de las conexiones, de lo cual no estoy muy convencido o más bien carezco de las herramientas o conocimientos necesarios para emitir una opinión informada.
Si alguien de esta grandiosa comunidad pudiera darme una idea o algo por donde empezar se lo agradecería muchísimo.
Afectuosos saludos a todos
- Inicie sesión o regístrese para enviar comentarios
Broken Pipe
Por lo visto tienes un servlet que exporta un archivo PDF (que genera al vuelo). Revisa que en tu codigo no apliques un
al
donde no deberia.
También hay que examinar si el tiempo de creación es tan tardado como para qe el browser cierre la conexión. El Broken Pipe sucede cuando se interrumpe la comunicación de una conexión cualquiera (generalmente de un cliente).
Broken Pipe
Voy a incarle el diente a lo que me indicas y luego te cuento.
Gracias por tu atención.