File tree Expand file tree Collapse file tree
src/main/java/edu/harvard/iq/dataverse/dataaccess Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1555,4 +1555,16 @@ public static String getNewIdentifier(String driverId) {
15551555 return driverId + DataAccess .SEPARATOR + getConfigParamForDriver (driverId , BUCKET_NAME ) + ":"
15561556 + FileUtil .generateStorageIdentifier ();
15571557 }
1558+
1559+ public static void closeAll () {
1560+ logger .info ("Closing all S3 clients and transfer managers." );
1561+ driverTMMap .values ().forEach (S3TransferManager ::close );
1562+ driverTMMap .clear ();
1563+ driverClientMap .values ().forEach (S3AsyncClient ::close );
1564+ driverClientMap .clear ();
1565+ driverPresignerMap .values ().forEach (S3Presigner ::close );
1566+ driverPresignerMap .clear ();
1567+ // AwsCredentialsProvider does not need to be closed unless it's a specific implementation that requires it.
1568+ driverCredentialsProviderMap .clear ();
1569+ }
15581570}
Original file line number Diff line number Diff line change 1+ package edu .harvard .iq .dataverse .dataaccess ;
2+
3+ import jakarta .annotation .PreDestroy ;
4+ import jakarta .ejb .Singleton ;
5+ import jakarta .ejb .Startup ;
6+
7+ @ Singleton
8+ @ Startup
9+ public class S3LifecycleBean {
10+
11+ @ PreDestroy
12+ public void cleanup () {
13+ S3AccessIO .closeAll ();
14+ }
15+ }
You can’t perform that action at this time.
0 commit comments