This is an automated email from the ASF dual-hosted git repository.
snuyanzin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 45295cf6260 [FLINK-38503] Adapt `DefaultClusterClientServiceLoader` to
java 25
45295cf6260 is described below
commit 45295cf62608ca172b83ac42d9128d027a91d06a
Author: Sergey Nuyanzin <[email protected]>
AuthorDate: Tue May 26 08:48:24 2026 +0200
[FLINK-38503] Adapt `DefaultClusterClientServiceLoader` to java 25
---
.../DefaultClusterClientServiceLoader.java | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git
a/flink-clients/src/main/java/org/apache/flink/client/deployment/DefaultClusterClientServiceLoader.java
b/flink-clients/src/main/java/org/apache/flink/client/deployment/DefaultClusterClientServiceLoader.java
index 8c33243c1d5..dc95df92c8b 100644
---
a/flink-clients/src/main/java/org/apache/flink/client/deployment/DefaultClusterClientServiceLoader.java
+++
b/flink-clients/src/main/java/org/apache/flink/client/deployment/DefaultClusterClientServiceLoader.java
@@ -52,14 +52,21 @@ public class DefaultClusterClientServiceLoader implements
ClusterClientServiceLo
final List<ClusterClientFactory> compatibleFactories = new
ArrayList<>();
final Iterator<ClusterClientFactory> factories = loader.iterator();
- while (factories.hasNext()) {
+ while (true) {
try {
+ // hasNext might lead to error in java 24, 25
+ // for more details take a look at
https://bugs.openjdk.org/browse/JDK-8196182
+ // and https://bugs.openjdk.org/browse/JDK-8350481
+ if (!factories.hasNext()) {
+ break;
+ }
final ClusterClientFactory factory = factories.next();
if (factory != null &&
factory.isCompatibleWith(configuration)) {
compatibleFactories.add(factory);
}
} catch (Throwable e) {
- if (e.getCause() instanceof NoClassDefFoundError) {
+ if (e instanceof NoClassDefFoundError
+ || e.getCause() instanceof NoClassDefFoundError) {
LOG.info("Could not load factory due to missing
dependencies.");
} else {
throw e;
@@ -98,8 +105,14 @@ public class DefaultClusterClientServiceLoader implements
ClusterClientServiceLo
final List<String> result = new ArrayList<>();
final Iterator<ClusterClientFactory> it = loader.iterator();
- while (it.hasNext()) {
+ while (true) {
try {
+ // hasNext might lead to error in java 24, 25
+ // for more details take a look at
https://bugs.openjdk.org/browse/JDK-8196182
+ // and https://bugs.openjdk.org/browse/JDK-8350481
+ if (!it.hasNext()) {
+ break;
+ }
final ClusterClientFactory clientFactory = it.next();
final Optional<String> applicationName =
clientFactory.getApplicationTargetName();
@@ -107,7 +120,7 @@ public class DefaultClusterClientServiceLoader implements
ClusterClientServiceLo
result.add(applicationName.get());
}
- } catch (ServiceConfigurationError e) {
+ } catch (ServiceConfigurationError | NoClassDefFoundError e) {
// cannot be loaded, most likely because Hadoop is not
// in the classpath, we can ignore it for now.
}