Jaehyun Kim created FLINK-38284:
-----------------------------------
Summary: 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
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}} 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)