Я пытаюсь прочитать очень большой файл (почти 1 ГБ) с S3.Однако getobject не может прочитать файл с ошибкой
ПРЕДУПРЕЖДЕНИЕ: не все байты были прочитаны из S3ObjectInputStream, прерывая HTTP-соединение.Это, вероятно, ошибка и может привести к неоптимальному поведению.Запрашивайте только те байты, которые вам нужны, через ранжированный GET или сливайте входной поток после использования.
Я проверил несколько сообщений и обнаружил, что s3ObjectInputStream.abort () может решить проблему.Но это все равно не помогает.
S3Object sourceS3Object = null;
S3ObjectInputStream s3ObjectInputStream=null;
InputStream reader = null;
ObjectMetadata metadata = null;
int retries = 10;
while (retries > 0) {
try {
sourceS3Object = sourceS3Client.getObject(sourceS3Uri.getBucket(), sourceS3Uri.getKey());
s3ObjectInputStream = sourceS3Object.getObjectContent();
reader = new BufferedInputStream(s3ObjectInputStream);
} catch (Exception readingException) {
retries--;
System.out.println(readingException);
System.out.println(readingException.getStackTrace().toString());
readingException.printStackTrace();
if (s3ObjectInputStream != null) {
s3ObjectInputStream.abort();
}
sourceS3Object = sourceS3Client.getObject(sourceS3Uri.getBucket(), sourceS3Uri.getKey());
s3ObjectInputStream = sourceS3Object.getObjectContent();
} finally {
if (retries == 0) {
System.out.println("Out of retries");
}
}
}
Копирование выполняется успешно для файлов меньшего размера, но для больших файлов оно выдает мне это предупреждение