You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Michael Johnson (Jira)" <ji...@apache.org> on 2026/07/11 20:14:00 UTC
[jira] [Commented] (FLINK-38350) Update Hadoop Library to 3.4.2
[ https://issues.apache.org/jira/browse/FLINK-38350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18095631#comment-18095631 ]
Michael Johnson commented on FLINK-38350:
-----------------------------------------
Hi,
I think this is becoming important due to changes in how SSE-C works for S3!
MultiPartUploads to S3 are in 3 parts:
* CreateMultipartUpload: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html]
* UploadPart: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html]
* CompleteMultipartUpload: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html]
When using SSE-C, I believe this Bug was corrected for only the first 2 parts...but not the 3rd!
Meaning, when calling the CompleteMultipartUpload function, it does not pass the required Encryption Headers!
If you look at the S3 Docs for CompleteMultipartUpload: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html#API_CompleteMultipartUpload_RequestParameters]
These Headers are still required when SSE-C is used:
* *[x-amz-server-side-encryption-customer-algorithm|https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html#API_CompleteMultipartUpload_RequestSyntax]*
* {*}[x-amz-server-side-encryption-customer-key|https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html#API_CompleteMultipartUpload_RequestSyntax]{*}{*}{{*}}
* {*}[x-amz-server-side-encryption-customer-key-MD5|https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html#API_CompleteMultipartUpload_RequestSyntax]{*}{*}{{*}}
Hadoop library is used internally by Apache Flink for Snapshotting when SSE-C is required...as such, it will cause Snapshotting to fail on the 3rd stage!
Upon deeper investigation:
* Flink 2.2.0 and Flink 2.3.0 are using Hadoop 3.3.4: [https://github.com/apache/flink/blob/1baacaaade29ecc9dbc13b66c390b646a45d9544/flink-filesystems/pom.xml#L37]
* Hadoop 3.3.4 uses AWS SDK Java 1.12.262: [https://github.com/apache/hadoop/blob/a585a73c3e02ac62350c136643a5e7f6095a3dbb/hadoop-project/pom.xml#L187]
* AWS SDK Java 1.12.262 does NOT implement SSE-C for CompleteMultipartUpload: [https://github.com/aws/aws-sdk-java/blob/1.12.262/aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/model/CompleteMultipartUploadRequest.java#L41]
However:
* Next highest version of Hadoop is 3.4.0, which is using AWS SDK Java 1.12.599: [https://github.com/apache/hadoop/blob/branch-3.4.0/hadoop-project/pom.xml#L189]
* AWS SDK Java 1.12.599 DOES implement SSE-C for CompleteMultipartUpload: [https://github.com/aws/aws-sdk-java/blob/1.12.599/aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/model/CompleteMultipartUploadRequest.java#L41]
So I think the necessary thing is that Flink will need to upgrade Hadoop to at least 3.4.0!
> Update Hadoop Library to 3.4.2
> ------------------------------
>
> Key: FLINK-38350
> URL: https://issues.apache.org/jira/browse/FLINK-38350
> Project: Flink
> Issue Type: Improvement
> Components: FileSystems
> Affects Versions: 2.0-preview, 1.20.2
> Reporter: Paul Ashley
> Priority: Major
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> Hadoop 3.4.2 which includes support for AWS conditional writes in https://issues.apache.org/jira/browse/HADOOP-19256
>
> It would be valuable for Flink to include this, as it would allow S3 based table sinks to be able to guarantee write integrity without relying on other concurrency controls (or accepting data loss).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)