[CVE][filesystem] Align Hadoop dependencies to 3.4.3 - #3699
Conversation
|
@luoyuxia @fresh-borzoni PTAL |
|
@leekeiabstraction Could you please take a look? |
Migrate the S3 filesystem to modular AWS SDK v2 dependencies while preserving authentication, STS, KMS, and transfer-manager support. Update filesystem dependency notices and documentation, and avoid Azure test DNS retries.
3fc205c to
3af2852
Compare
leekeiabstraction
left a comment
There was a problem hiding this comment.
TY for the PR. Did a quick eyeball, left a question. Will follow up with more thorough review once addressed.
leekeiabstraction
left a comment
There was a problem hiding this comment.
TY for the PR, left further comments. PTAL 🙏
|
@leekeiabstraction Nice catches. I have addressed the review comments in 445fc7d and resolved the corresponding threads. Please continue the review when you have time. Thanks! |
@leekeiabstraction Thanks for checking. To be precise, I have not re-run the complete Glue walkthrough end to end on ECS, EKS, or EC2. I verified that the documented AWS SDK v2 provider classes exist and implement the interface expected by Hadoop S3A, but I did not test live credential retrieval against the AWS runtime metadata endpoints. After another look, I think the guide should avoid maintaining separate provider lists for ECS, EKS, and EC2 altogether. AWS SDK v2 already provides |
|
Hi @litiliu and @leekeiabstraction, the SDK v2 class name swap for the existing providers LGTM, just a mechanical migration. The change for SGTM as long as the user can still choose their own path in case However, until it has been tested E2E it's hard to say for sure what should go in the docs regarding this issue. Perhaps we can go that route while adding some note that it's not tested in all possible use-cases? That might not be necessary either. |
|
@qzyu999 Thanks for confirming the AWS SDK v2 class-name swap. I agree that switching the guide to DefaultCredentialsProvider would require additional end-to-end validation. To keep this PR focused on the mechanical v1-to-v2 migration, I won’t include that additional change in this PR and will retain the current provider mappings. @leekeiabstraction |
|
@leekeiabstraction, Created #3916 to track the DefaultCredentialsProvider evaluation and manual E2E verification. If you have no further concerns, would you mind approving this PR when you have time? Thanks! |
| import static org.assertj.core.api.Assertions.assertThat; | ||
|
|
||
| /** Tests the Hadoop S3A and AWS SDK v2 path against a hermetic S3-compatible backend. */ | ||
| @Testcontainers(disabledWithoutDocker = true) |
There was a problem hiding this comment.
Why do we set disabledWithoutDocker? Doing so may cause the test be skipped instead of failed if CI / local build does not have docker running
|
Approved, TY for your contribution! |
Purpose
Linked issue: close #3682
Fluss currently uses inconsistent Hadoop versions (
fluss.hadoop.version=3.4.0,fs.hadoopshaded.version=3.3.4). This PR aligns all filesystem plugins to Hadoop 3.4.3 and migratesfluss-fs-s3from the end-of-life AWS SDK for Java v1 to the modular AWS SDK v2, while preserving authentication, STS, KMS and S3 transfer-manager support.Brief change log
fluss.hadoop.version3.4.0 → 3.4.3 andfs.hadoopshaded.version3.3.4 → 3.4.3.fluss-fs-s3to AWS SDK v2 (software.amazon.awssdk): STS / KMS / auth / s3 / s3-transfer-manager as individual modules; excludesoftware.amazon.awssdk:bundle; drop the unused DynamoDB dependency.S3DelegationTokenProviderandDynamicTemporaryAWSCredentialsProvideragainst SDK v2 APIs; remove the copiedXmlResponsesSaxParserand its checkstyle/coverage suppressions.hadoop-common; refreshNOTICE/LICENSEfor all filesystem modules (including COS); add the reactive-streams license.Artifact size review
The S3 increase is primarily the AWS SDK V2 S3 model and its asynchronous Netty transport. The
s3-transfer-managerclasses themselves account for only about 0.20 MB compressed, but Hadoop 3.4.3 S3A invokesS3TransferManager.copy()on copy/rename paths, so its module and transport cannot be removed safely. The resulting S3 artifact contains STS, KMS, Transfer Manager, and the async transport, and contains neither DynamoDB nor the complete AWS SDK bundle.Tests
S3DelegationTokenProviderTestfor the SDK v2 credential APIs.mvn clean verify, spotless and RAT.API and Format
No public API or storage-format change. Note:
s3.aws.credentials.provider(fs.s3a.aws.credentials.provider) now requires an AWS SDK v2software.amazon.awssdk.auth.credentials.AwsCredentialsProviderimplementation instead of an SDK v1 provider (documented).Documentation
Updated the S3 and HDFS filesystem docs for AWS SDK v2 / Hadoop 3.4.3.
Generative AI disclosure
Generated-by: OpenAI Codex following the guidelines (https://github.com/apache/fluss/blob/main/AGENTS.md)