Resources used by an Amazon S3 TransferManager are not released Medium

Call ShutdownNow when you use TransferManager to manage transfers to Amazon S3. This ensures all the resources used by TransferManager are released.

Detector ID
java/amazon-s3-transfer-manager-shutdown@v1.0
Category
Common Weakness Enumeration (CWE) external icon
-

Noncompliant example

1public void transferManagerNoncompliant(PutObjectRequest putRequest) {
2    // Noncompliant: transferManager is not shutdown.
3    TransferManager transferManager = TransferManagerBuilder.defaultTransferManager();
4    try {
5        final Upload upload = transferManager.upload(putRequest);
6        upload.waitForCompletion();
7    }
8    catch (InterruptedException e) {
9        Thread.currentThread().interrupt();
10    }
11}

Compliant example

1public void transferManagerCompliant(PutObjectRequest putRequest) {
2    TransferManager transferManager = TransferManagerBuilder.defaultTransferManager();
3    try {
4        final Upload upload = transferManager.upload(putRequest);
5        upload.waitForCompletion();
6    }
7    catch (InterruptedException e) {
8        Thread.currentThread().interrupt();
9    } finally
10    {
11        // Compliant: transferManager is shutdown.
12        transferManager.shutdownNow();
13    }
14}