Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-3650

GridFSDownloadPublisher can't handle > 2 GB

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 4.0.1
    • 3.12.1
    • Reactive Streams
    • None

    Description

      After upgrading to Java driver 3.12 and using the Reactive Streams-based asynchronous driver, it is not possible anymore to download files bigger than 2 GB. In the older version using GridFSDownloadStream it was supported, however GridFSDownloadPublisherImpl is limited by int. The code breaks here on allocate when exceeding max value 2147483647, then the remaining intValue() becomes negative:

                          int byteBufferSize = Math.max(chunkSize, bufferSizeBytes);
                          byteBufferSize =  Math.min(Long.valueOf(remaining).intValue(), byteBufferSize);
                          ByteBuffer byteBuffer = ByteBuffer.allocate(byteBufferSize);

      Is it possible to use long instead of int for the byte buffer to avoid this?

      See also related Jira where it was fixed to handle larger files in the old implementation of GridFSDownloadStreamImpl: https://jira.mongodb.org/browse/JAVA-2548

      Attachments

        Activity

          People

            ross@mongodb.com Ross Lawley
            tamara.ockhuijsen@klm.com Tamara Ockhuijsen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: