问题描述
我有5个文件,每个文件大小为200 MB。我正在使用Executor服务并行上传这些文件,并且 使用具有多部分阈值= 50 MB的TransferManager并通过使用对upload.waitForCompletion()的阻塞方法调用来等待上载完成(表示当前线程挂起,直到 上传成功或抛出错误)。
请找到以下代码摘录:
private static final ExecutorService executor = Executors.newFixedThreadPool(10);
executor.execute(() -> upload("bucketName",new File(fullFilePath)));
public static void upload(final String bucketName,final File filePath) {
AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withCredentials(new AWsstaticCredentialsProvider(getCredentals()))
.withRegion(Regions.DEFAULT_REGION).build();
TransferManager tm = TransferManagerBuilder.standard().withS3Client(amazonS3)
.withMultipartUploadThreshold((long) (50 * 1024 * 1025)).build();
final String fileName = filePath.getName();
try {
Upload upload = tm.upload(s3Bucket,fileName,filePath);
upload.waitForCompletion();
log.info("Successfully uploaded file = " + fileName);
} catch (Exception e) {
log.info("Upload Failed for file = " + fileName);
log.error(e);
}
}
直到所有5个文件的“成功上传”都没有退出主线程。 现在,该程序不会引发任何错误,并且可以成功显示所有5个文件,但是当我在aws控制台中打开存储桶时,什么也没有。
任何人都可以建议这里发生了什么或如何对其进行进一步调试吗?
解决方法
代码运行正常,我正在寻找错误的存储桶。