Я использую класс TransferManager AWS SDK для Java (aws - java -sdk-s3, версия 1.11.373) для загрузки файлов с компьютера AIX в сегменты S3. Не удается выполнить многоэтапную передачу при первой загрузке части с отмененным состоянием при попытке загрузить «большие» файлы (например, файл объемом 1 ГБ, но такая же проблема возникает и для файлов размером 60 МБ).
Как эта проблема может быть разрешен?
Мой фрагмент кода (тот же код работает нормально на Windows / Linux машинах):
TransferManager tx = TransferManagerBuilder.standard().withS3Client(getAmzClient()).build();
PutObjectRequest putObjectRequest = new PutObjectRequest(getBucket(), file, fileToUpload);
S3ProgressListener pl = new S3ProgressListener(this);
putObjectRequest.setGeneralProgressListener(pl);
Transfer transfer = tx.upload(putObjectRequest);
while (!transfer.isDone()) {
[business logic code that does not refer to any S3 objects]
}
...
public class S3ProgressListener implements ProgressListener {
S3FileCopy fc;
Object obj = new Object();
public S3ProgressListener(S3FileCopy fc) {
this.fc = fc;
}
@Override
public void progressChanged(ProgressEvent progressEvent) {
synchronized (obj) {
fc.transferedSize += progressEvent.getBytesTransferred();
if(fc.transferedSize > fc.fileSize) {
fc.transferedSize = fc.fileSize;
}
}
}
}