This is an automated email from the ASF dual-hosted git repository.

chesnay 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 380d8c22d17 [FLINK-30045][client] Remove duplicate check for main 
class existence
380d8c22d17 is described below

commit 380d8c22d17135fc4164e62d78c769bb69e5aa8a
Author: Nico Kruber <[email protected]>
AuthorDate: Fri Nov 18 08:37:04 2022 +0100

    [FLINK-30045][client] Remove duplicate check for main class existence
---
 ...FromClasspathEntryClassInformationProvider.java | 42 ----------------------
 ...ClasspathEntryClassInformationProviderTest.java | 17 ---------
 .../DefaultPackagedProgramRetrieverTest.java       | 36 +++++++------------
 3 files changed, 12 insertions(+), 83 deletions(-)

diff --git 
a/flink-clients/src/main/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProvider.java
 
b/flink-clients/src/main/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProvider.java
index 7b9ade424f3..bb1acf4863a 100644
--- 
a/flink-clients/src/main/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProvider.java
+++ 
b/flink-clients/src/main/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProvider.java
@@ -19,7 +19,6 @@
 package org.apache.flink.client.deployment.application;
 
 import org.apache.flink.annotation.VisibleForTesting;
-import org.apache.flink.util.FileUtils;
 import org.apache.flink.util.FlinkException;
 import org.apache.flink.util.Preconditions;
 import org.apache.flink.util.StringUtils;
@@ -31,9 +30,6 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
@@ -60,12 +56,6 @@ public class FromClasspathEntryClassInformationProvider 
implements EntryClassInf
             String jobClassName, Iterable<URL> classpath) throws IOException, 
FlinkException {
         Preconditions.checkNotNull(jobClassName, "No job class name passed.");
         Preconditions.checkNotNull(classpath, "No classpath passed.");
-        if (!userClasspathContainsJobClass(jobClassName, classpath)) {
-            throw new FlinkException(
-                    String.format(
-                            "Could not find the provided job class (%s) in the 
user lib directory.",
-                            jobClassName));
-        }
 
         return new FromClasspathEntryClassInformationProvider(jobClassName);
     }
@@ -180,38 +170,6 @@ public class FromClasspathEntryClassInformationProvider 
implements EntryClassInf
         }
     }
 
-    private static boolean userClasspathContainsJobClass(
-            String jobClassName, Iterable<URL> classpath) throws IOException {
-        for (URL url : classpath) {
-            if (!isJarFile(url)) {
-                continue;
-            }
-
-            try (final JarFile jarFile = new JarFile(url.getFile())) {
-                if (jarContainsJobClass(jobClassName, jarFile)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private static boolean jarContainsJobClass(String jobClassName, JarFile 
jarFile) {
-        return jarFile.stream()
-                .map(JarEntry::getName)
-                .filter(fileName -> 
fileName.endsWith(FileUtils.CLASS_FILE_EXTENSION))
-                .map(FileUtils::stripFileExtension)
-                .map(
-                        fileName ->
-                                fileName.replaceAll(
-                                        Pattern.quote(File.separator), 
FileUtils.PACKAGE_SEPARATOR))
-                .anyMatch(name -> name.equals(jobClassName));
-    }
-
-    private static boolean isJarFile(URL url) {
-        return isJarFilename(url.getFile());
-    }
-
     private static boolean isJarFilename(String filename) {
         return filename.endsWith(".jar");
     }
diff --git 
a/flink-clients/src/test/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProviderTest.java
 
b/flink-clients/src/test/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProviderTest.java
index b2bb7571788..12cfe7576a9 100644
--- 
a/flink-clients/src/test/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProviderTest.java
+++ 
b/flink-clients/src/test/java/org/apache/flink/client/deployment/application/FromClasspathEntryClassInformationProviderTest.java
@@ -58,10 +58,6 @@ class FromClasspathEntryClassInformationProviderTest {
     ClasspathProviderExtension testJobEntryClassClasspathProvider =
             ClasspathProviderExtension.createWithTestJobOnly();
 
-    @RegisterExtension
-    ClasspathProviderExtension onlyTextFileClasspathProvider =
-            ClasspathProviderExtension.createWithTextFileOnly();
-
     @Test
     void testJobClassOnUserClasspathWithExplicitJobClassName() throws 
IOException, FlinkException {
         FromClasspathEntryClassInformationProvider testInstance =
@@ -74,19 +70,6 @@ class FromClasspathEntryClassInformationProviderTest {
         assertThat(testInstance.getJarFile()).isEmpty();
     }
 
-    @Test
-    void testJobClassOnUserClasspathWithOnlyTestFileOnClasspath() {
-        assertThatThrownBy(
-                        () -> {
-                            // we want to check that the right exception is 
thrown if the user
-                            // classpath is empty
-                            FromClasspathEntryClassInformationProvider.create(
-                                    "SomeJobClassName",
-                                    
onlyTextFileClasspathProvider.getURLUserClasspath());
-                        })
-                .isInstanceOf(FlinkException.class);
-    }
-
     @Test
     void testJobClassOnUserClasspathWithMissingJobClassName() {
         assertThatThrownBy(
diff --git 
a/flink-clients/src/test/java/org/apache/flink/client/program/DefaultPackagedProgramRetrieverTest.java
 
b/flink-clients/src/test/java/org/apache/flink/client/program/DefaultPackagedProgramRetrieverTest.java
index cb750edbd46..4fec5fca955 100644
--- 
a/flink-clients/src/test/java/org/apache/flink/client/program/DefaultPackagedProgramRetrieverTest.java
+++ 
b/flink-clients/src/test/java/org/apache/flink/client/program/DefaultPackagedProgramRetrieverTest.java
@@ -50,7 +50,6 @@ import java.util.stream.Collectors;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.assertj.core.api.Assertions.fail;
 
 /** {@code PackagedProgramRetrieverImplTest} tests {@link 
DefaultPackagedProgramRetriever}. */
 class DefaultPackagedProgramRetrieverTest {
@@ -277,24 +276,6 @@ class DefaultPackagedProgramRetrieverTest {
         assertThat(jobGraph.getJobID()).isEqualTo(jobId);
     }
 
-    @Test
-    void testFailIfJobDirDoesNotHaveEntryClass() {
-        assertThatThrownBy(
-                        () -> {
-                            DefaultPackagedProgramRetriever.create(
-                                    
noEntryClassClasspathProvider.getDirectory(),
-                                    
testJobEntryClassClasspathProvider.getJobClassName(),
-                                    
ClasspathProviderExtension.parametersForTestJob("suffix"),
-                                    new Configuration());
-                            fail("This case should throw exception !");
-                        })
-                .isInstanceOf(FlinkException.class)
-                .hasMessageContaining(
-                        String.format(
-                                "Could not find the provided job class (%s) in 
the user lib directory.",
-                                
testJobEntryClassClasspathProvider.getJobClassName()));
-    }
-
     @Test
     void testEntryClassNotFoundOnSystemClasspath() {
         assertThatThrownBy(
@@ -319,14 +300,21 @@ class DefaultPackagedProgramRetrieverTest {
 
     @Test
     void testEntryClassNotFoundOnUserClasspath() {
+        final String jobClassName = "NotExistingClass";
         assertThatThrownBy(
                         () ->
                                 DefaultPackagedProgramRetriever.create(
-                                        
noEntryClassClasspathProvider.getDirectory(),
-                                        "NotExistingClass",
-                                        new String[0],
-                                        new Configuration()))
-                .isInstanceOf(FlinkException.class);
+                                                
noEntryClassClasspathProvider.getDirectory(),
+                                                jobClassName,
+                                                new String[0],
+                                                new Configuration())
+                                        .getPackagedProgram())
+                .isInstanceOf(FlinkException.class)
+                .hasMessageContaining("Could not load the provided entrypoint 
class.")
+                .cause()
+                .hasMessageContaining(
+                        "The program's entry point class '%s' was not found in 
the jar file.",
+                        jobClassName);
     }
 
     @Test

Reply via email to