0 Replies Latest reply: Sep 18, 2013 9:31 AM by Pete Mahon RSS

    APEX Listener on Glassfish 3.1.2 - Broken Pipe Errors

    Pete Mahon

      Hi,

       

      We're running the following:

       

      APEX 4.1.00.23

      APEX Listener 2.0.3.221.10.13

      Glassfish 3.1.2

       

      connected to Oracle Enterprise Database 11.2.0.3.0, running in RAC.

       

      We've only been on Glassfish for a while and were using modplsql previously with Oracle HTTP Server with no issues.

       

      Some large datasets are no longer downloading to the client machines, but only when exceeding a specific byte-length (approx 61,500KB).

       

      The server log is showing the following error:

       

      [#|2013-09-16T12:59:36.408+0100|SEVERE|glassfish3.1.2|null|_ThreadID=37;_ThreadName=Thread-2;|java.io.IOException: Broken pipe
      org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:430)
        at com.sun.grizzly.util.buf.ByteChunk.append(ByteChunk.java:356)
        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 org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:148)
        at oracle.dbtools.rt.web.WebErrorResponse$DeferErrorOuput.write(WebErrorResponse.java:247)
        at oracle.dbtools.apex.ModApexContext.write(ModApexContext.java:188)
        at oracle.dbtools.apex.ModApexContext.write(ModApexContext.java:146)
        at oracle.dbtools.apex.ModApex.handleRequest(ModApex.java:244)
        at oracle.dbtools.apex.ModApex.doPost(ModApex.java:154)
        at oracle.dbtools.apex.ModApex.service(ModApex.java:318)
        at oracle.dbtools.rt.web.HttpEndpointBase.modApex(HttpEndpointBase.java:260)
        at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:110)
        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 com.vm.apex.filters.UserAgentCompatibleFilter.doFilter(UserAgentCompatibleFilter.java:24)
        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:662)
      Caused by: java.io.IOException: Broken pipe
        at sun.nio.ch.FileDispatcher.write0(Native Method)
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:69)
        at sun.nio.ch.IOUtil.write(IOUtil.java:40)
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:336)
        at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:108)
        at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:76)
        at com.sun.grizzly.util.SSLOutputWriter.flushChannel(SSLOutputWriter.java:102)
        at com.sun.grizzly.ssl.SSLOutputBuffer.flushChannel(SSLOutputBuffer.java:138)
        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)
        ... 43 more
      

       

      Has anyone experienced this? The HTTP headers from the requests which are not working are showing the correct (expected) byte-length but not delivering the full file. This is consistent across multiple browsers, sites, instances etc (where glassfish/listener settings are the same).

       

      Any assistance or tips would be greatly appreciated.

       

      Regards, Pete