Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-6720

AbstractHTTPDestination#WrappedOutputStream.close() calls flush after close

    XMLWordPrintableJSON

Details

    • Unknown

    Description

      Bug location: https://github.com/apache/cxf/blob/master/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java#L806

      ServletResponse.flushBuffer: http://grepcode.com/file/repo1.maven.org/maven2/javax.servlet/javax.servlet-api/3.1.0/javax/servlet/ServletResponse.java#ServletResponse.flushBuffer%28%29

      Reading the javadoc of ServletResponse.flushBuffer, Closable and Flushable interfaces tells me that calling flushBuffer on a ServletResponse containing a closed stream could give an IOException.

      We have had problems with this in Liberty Profile, while using CXF together with CXF.

      Background story:
      1) Javamelody issue: https://github.com/javamelody/javamelody/issues/411
      2) Old discussion: https://groups.google.com/forum/#!topic/javamelody/kX31sRTFrHE/discussion
      3) IBM WasDev issue: https://developer.ibm.com/answers/questions/244982/why-does-httpoutputstreamflush-when-stream-is-clos/

      To make a short recap:
      1) Soap-call to the service
      2) Cxf calls close() -> OutputStream closes
      3) Cxf calls flushBuffer which hits JavaMelody's ServletResponse-wrapper which again calls flush on the OutputStream
      4) Ibm Liberty Profile throws an IOException telling the stream is closed.

      If we exclude JavaMelody:
      3) Cxf calls flushBuffer which hits Liberty Profile's ServletResponse-wrapper which checks if the stream is already close and returns early.

      Update: Added crossreference to the IBM WasDev issue from the wrong one: https://developer.ibm.com/answers/questions/244982/why-does-httpoutputstreamflush-when-stream-is-clos/

      Attachments

        Activity

          People

            ay Akitoshi Yoshida
            jahestad@gmail.com John Hestad
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: