Skip to content

Commit a72a8ca

Browse files
ahmarsuhailsteveloughran
authored andcommitted
HADOOP-18853. Upgrade AWS SDK version to 2.20.28 (apache#5960)
Upgrades the AWS sdk v2 version to 2.20.28 This * adds multipart COPY/rename in the java async client * removes the aws-crt JAR dependency Contributed by Ahmar Suhail
1 parent 1135d05 commit a72a8ca

File tree

6 files changed

+39
-16
lines changed

6 files changed

+39
-16
lines changed

LICENSE-binary

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,8 +364,7 @@ org.objenesis:objenesis:2.6
364364
org.xerial.snappy:snappy-java:1.1.10.1
365365
org.yaml:snakeyaml:2.0
366366
org.wildfly.openssl:wildfly-openssl:1.1.3.Final
367-
software.amazon.awssdk:bundle:jar:2.19.12
368-
software.amazon.awssdk.crt:aws-crt:0.21.0
367+
software.amazon.awssdk:bundle:jar:2.20.128
369368

370369

371370
--------------------------------------------------------------------------------

hadoop-project/pom.xml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,8 @@
184184
<surefire.fork.timeout>900</surefire.fork.timeout>
185185
<aws-java-sdk.version>1.12.499</aws-java-sdk.version>
186186
<hsqldb.version>2.7.1</hsqldb.version>
187-
<aws-java-sdk-v2.version>2.19.12</aws-java-sdk-v2.version>
188-
<aws.evenstream.version>1.0.1</aws.evenstream.version>
189-
<awscrt.version>0.21.0</awscrt.version>
187+
<aws-java-sdk-v2.version>2.20.128</aws-java-sdk-v2.version>
188+
<aws.eventstream.version>1.0.1</aws.eventstream.version>
190189
<frontend-maven-plugin.version>1.11.2</frontend-maven-plugin.version>
191190
<jasmine-maven-plugin.version>2.1</jasmine-maven-plugin.version>
192191
<phantomjs-maven-plugin.version>0.7</phantomjs-maven-plugin.version>
@@ -1154,12 +1153,7 @@
11541153
<dependency>
11551154
<groupId>software.amazon.eventstream</groupId>
11561155
<artifactId>eventstream</artifactId>
1157-
<version>${aws.evenstream.version}</version>
1158-
</dependency>
1159-
<dependency>
1160-
<groupId>software.amazon.awssdk.crt</groupId>
1161-
<artifactId>aws-crt</artifactId>
1162-
<version>${awscrt.version}</version>
1156+
<version>${aws.eventstream.version}</version>
11631157
</dependency>
11641158
<dependency>
11651159
<groupId>org.apache.mina</groupId>

hadoop-tools/hadoop-aws/pom.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -518,10 +518,6 @@
518518
<artifactId>bundle</artifactId>
519519
<scope>compile</scope>
520520
</dependency>
521-
<dependency>
522-
<groupId>software.amazon.awssdk.crt</groupId>
523-
<artifactId>aws-crt</artifactId>
524-
</dependency>
525521
<dependency>
526522
<groupId>software.amazon.eventstream</groupId>
527523
<artifactId>eventstream</artifactId>

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/DefaultS3ClientFactory.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import software.amazon.awssdk.services.s3.S3BaseClientBuilder;
3838
import software.amazon.awssdk.services.s3.S3Client;
3939
import software.amazon.awssdk.services.s3.S3Configuration;
40+
import software.amazon.awssdk.services.s3.multipart.MultipartConfiguration;
4041
import software.amazon.awssdk.transfer.s3.S3TransferManager;
4142

4243
import org.apache.commons.lang3.StringUtils;
@@ -98,17 +99,25 @@ public S3AsyncClient createS3AsyncClient(
9899

99100
Configuration conf = getConf();
100101
String bucket = uri.getHost();
102+
101103
NettyNioAsyncHttpClient.Builder httpClientBuilder = AWSClientConfig
102104
.createAsyncHttpClientBuilder(conf)
103105
.proxyConfiguration(AWSClientConfig.createAsyncProxyConfiguration(conf, bucket));
106+
107+
MultipartConfiguration multipartConfiguration = MultipartConfiguration.builder()
108+
.minimumPartSizeInBytes(parameters.getMinimumPartSize())
109+
.thresholdInBytes(parameters.getMultiPartThreshold())
110+
.build();
111+
104112
return configureClientBuilder(S3AsyncClient.builder(), parameters, conf, bucket)
105113
.httpClientBuilder(httpClientBuilder)
114+
.multipartConfiguration(multipartConfiguration)
115+
.multipartEnabled(true)
106116
.build();
107117
}
108118

109119
@Override
110120
public S3TransferManager createS3TransferManager(final S3AsyncClient s3AsyncClient) {
111-
112121
return S3TransferManager.builder()
113122
.s3Client(s3AsyncClient)
114123
.build();

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,7 @@ private void bindAWSClient(URI name, boolean dtEnabled) throws IOException {
982982
.withRequesterPays(conf.getBoolean(ALLOW_REQUESTER_PAYS, DEFAULT_ALLOW_REQUESTER_PAYS))
983983
.withExecutionInterceptors(auditManager.createExecutionInterceptors())
984984
.withMinimumPartSize(partSize)
985+
.withMultipartThreshold(multiPartThreshold)
985986
.withTransferManagerExecutor(unboundedThreadPool)
986987
.withRegion(region);
987988

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ClientFactory.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,11 @@ final class S3ClientCreationParameters {
151151
*/
152152
private long minimumPartSize;
153153

154+
/**
155+
* Threshold for multipart operations.
156+
*/
157+
private long multiPartThreshold;
158+
154159
/**
155160
* Executor that the transfer manager will use to execute background tasks.
156161
*/
@@ -337,6 +342,25 @@ public S3ClientCreationParameters withMinimumPartSize(
337342
return this;
338343
}
339344

345+
/**
346+
* Get the threshold for multipart operations.
347+
* @return multipart threshold
348+
*/
349+
public long getMultiPartThreshold() {
350+
return multiPartThreshold;
351+
}
352+
353+
/**
354+
* Set the threshold for multipart operations.
355+
* @param value new value
356+
* @return the builder
357+
*/
358+
public S3ClientCreationParameters withMultipartThreshold(
359+
final long value) {
360+
multiPartThreshold = value;
361+
return this;
362+
}
363+
340364
/**
341365
* Get the executor that the transfer manager will use to execute background tasks.
342366
* @return part size

0 commit comments

Comments
 (0)