[
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)