We are trying to download a large (6GB) file from S3. On our slow connection, this takes about 20 minutes. Initially, we were seeing intermittent SocketTimeoutExceptions, although when we didn't see that issue, things worked fine. We raised the socket timeout to 25 minutes in response.
Now the download seems to hang after actually pulling down all the data. Initially, we were just using the Download.waitForCompletion(), but we wanted more feedback. We added a loop to report the progress, and it showed the percentage as '99.98596920967103' for 12 minutes. Then it encountered "SocketTimeoutException: Read timed out" and indicated that it would retry the download. The completion percentage showed as '100' for about 20 seconds. Then it completed and things worked correctly from there.