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