Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8257736

InputStream from BodyPublishers.ofInputStream() leaks when IOE happens

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • P4
    • Resolution: Fixed
    • 15, 16
    • 17
    • core-libs
    • None
    • b06

    Description

      `InputStream` from `BodyPublishers.ofInputStream()` is usually closed when the stream reaches EOF. However IOE handler returns without closing.

      I confirmed this problem in `BodyPublishers.ofInputStream()`, but I think `BodyPublishers.ofFile()`has same problem because it also use `StreamIterator`as well as `ofInputStream()`.


      How to reproduce:

      Following code (Test.java) attempts to post body from `TestInputStream` which throws IOE in `read()`. "close called" is shown on the console if `close()` is called.

      ```
      import java.io.*;
      import java.net.*;
      import java.net.http.*;

      public class Test{

        private static class TestInputStream extends InputStream{

          public TestInputStream(){
            super();
            System.out.println("test c'tor");
          }

          @Override
          public int read() throws IOException{
            System.out.println("read called");
            throw new IOException("test");
          }

          @Override
          public void close() throws IOException{
            System.out.println("close called");
            super.close();
          }

        }

        public static void main(String[] args) throws Exception{
          var http = HttpClient.newHttpClient();
          var request = HttpRequest.newBuilder()
                                   .uri(URI.create("http://httpbin.org/post"))
                                   .POST(HttpRequest.BodyPublishers.ofInputStream(() -> new TestInputStream()))
                                   .build();
          http.send(request, HttpResponse.BodyHandlers.discarding());
          System.out.println("Press any key to exit...");
          System.in.read();
        }
      }
      ```

      Attachments

        Issue Links

          Activity

            People

              ysuenaga Yasumasa Suenaga
              ysuenaga Yasumasa Suenaga
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: