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.
             }

Reply via email to