[ https://issues.apache.org/jira/browse/FLINK-38284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18016234#comment-18016234 ]
Jaehyun Kim commented on FLINK-38284: ------------------------------------- Hadoop 3.4.2 is not yet released. Once it is officially available, I plan to follow up with a PR to update `fs.hadoopshaded.version` and the relevant modules. > Prepare to upgrade hadoop version to 3.4.2 across Flink's Hadoop-based FS > connectors for OpenSSL 3 and Java 17 compatibility > ---------------------------------------------------------------------------------------------------------------------------- > > Key: FLINK-38284 > URL: https://issues.apache.org/jira/browse/FLINK-38284 > Project: Flink > Issue Type: Improvement > Components: Connectors / FileSystem, FileSystems > Reporter: Jaehyun Kim > Priority: Major > > h3. *Description* > Apache Hadoop has merged [PR > #7032|https://github.com/apache/hadoop/pull/7032] and HADOOP-19262, upgrading > wildfly-openssl to 2.1.6.Final to compatibility with Java 17 and OpenSSL 3. > This fix is planned to be included in the upcoming Hadoop 3.4.2 release. > Currently, Flink sets in {{flink-fliesystems/pom.xml}} : > {code:java} > <fs.hadoopshaded.version>3.3.4</fs.hadoopshaded.version> {code} > which means modules like {{flink-azure-fs-hadoop.jar}} transitively include > {{wildfly-oepnssl:1.0.7:Final}} via {{{}hadoop-azure:3.3.4{}}}. This version > is not compatible with OpenSSL 3 and causes runtime issues on modern > platforms. > h3. *Impact and Scope* > This issue originates in Apache Hadoop's {{hadoop-azure}} module, which > transitively includes an outdated version of {{{}wildfly-openssl{}}}. As a > result, all Flink modules depending on this (e.g., > {{{}flink-azure-fs-hadoop{}}}) are affected. > Furthermore, other Flink filesystem connectors that rely on Hadoop (directly > or via {{{}flink-shaded-hadoop{}}}) may also benefit from this upgrade: > * {{flink-azure-fs-hadoop}} > * {{flink-gs-fs-hadoop}} > * {{flink-oss-fs-hadoop}} > * {{flink-s3-fs-hadoop}} > This change is particularly relevant for users running Flink on: > * {*}Java 17{*}, where {{X509V1CertImpl}} was removed from the JDK > * *OpenSSL 3.x systems* (e.g., RHEL 9), where older {{wildfly-openssl}} > versions fail to load > h3. *Motivation* > Upgrading to {{hadoop-azure:3.4.2}} will: > * Ensure compatibility with Java 17+ and OpenSSL 3 > * Resolve {{ClassNotFoundException: > com.sun.security.cert.internal.x509.X509V1CertImpl}} errors on OpenSSL > 1.1-based systems (e.g., RHEL 8.10) > * Align with Hadoop upstream fixes > * Avoid of performance-impacting workarounds like forcing > {{fs.azure.ssl.channel.mode=Default_JSSE}} > * Even when JSSE fallback avoids the crash, {*}it is not ideal for > performance and stability{*}. > Using native OpenSSL via JNI (as intended by {{{}wildfly-openssl{}}}) is > preferred in high-throughput or secure production environments. > h3. *Proposed Plan* > Once Hadoop 3.4.2 is officially released: > # Update {{fs.hadoopshaded.version}} to {{3.4.2}} in > {{flink-filesystems/pom.xml}} > # Verify and update NOTICE/LICENSE files as required > # Rebuild {{flink-azure-fs-hadoop}} to confirm correct shading of the > updated dependencies > # Ensure that native SSL initialization works in both OpenSSL 1.1 and 3 > environments > # Optionally, update test coverage for ABFS + SSL > This ticket serves to track the upgrade preparation and corresponding work > once the upstream Hadoop release is available. > h3. *Environment Affected* > * Flink 1.19.0 - 2.1.0 > * Java 17 (OracleJDK, OpenJDK, Amazon Corretto) > * RHEL 8.10 (OpenSSL 1.1.1) → native loads, causes error > {code:java} > [ERROR] org.apache.flink.runtime.entrypoint.ClusterEntrypoint[] - Fatal error > occurred in the cluster entrypoint.java.util.concurrent.CompletionException: > java.lang.RuntimeException: java.lang.IllegalStateException: > javax.security.cert.CertificateException: Could not find class: > java.lang.ClassNotFoundException: > com/sun/security/cert/internal/x509/X509V1CertImpl{code} > * RHEL 9.3 (OpenSSL 3.x) → native fails, JSSE fallback > {code:java} > [DEBUG] org.apache.hadoop.security.ssl.DelegatingSSLSocketFactory [] - > Failed to load OpenSSL. Falling back to the JSSE{code} > * ABFS with HA enabled ({{{}abfss://{}}}) > h3. *Workarounds Today* > * Set {{fs.azure.ssl.channel.mode:Default_JSSE}} in {{config.yaml}} to > disable native OpenSSL > * Avoid OpenSSL 1.1 platforms > * Remove the {{wildfly-openssl}} JAR from the opt plugin (not ideal) -- This message was sent by Atlassian Jira (v8.20.10#820010)