[ https://issues.apache.org/jira/browse/FLINK-9743?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16538366#comment-16538366
]
ASF GitHub Bot commented on FLINK-9743:
---------------------------------------
Github user zentol commented on a diff in the pull request:
https://github.com/apache/flink/pull/6263#discussion_r201291547
--- Diff: flink-clients/src/test/java/org/apache/flink/client/program/PackagedProgramTest.java
---
@@ -56,6 +63,54 @@ public void testGetPreviewPlan() {
}
}
+ /**
+ * The test for {@link PackagedProgram#extractContainedLibraries}.
+ * As a prerequisite the test generates a jar file with the following structure
+ * test.jar
+ * |- lib
+ * |--|- internalTest.jar
+ */
+ @Test
+ public void testExtractContainedLibraries() {
+ String s = "testExtractContainedLibraries";
+ Path workDir = null;
+ Path fakeJar = null;
+ try {
+ workDir = Files.createTempDirectory(PackagedProgram.class.getSimpleName() + "_");
+ fakeJar = Paths.get(workDir.toAbsolutePath().toString(), "test.jar");
+ FileOutputStream fos = new FileOutputStream(fakeJar.toFile());
+ try (ZipOutputStream zos = new ZipOutputStream(fos)) {
+ ZipEntry entry = new ZipEntry("lib/internalTest.jar");
+ zos.putNextEntry(entry);
+ zos.write(s.getBytes());
+ zos.closeEntry();
+ } catch (IOException e) {
--- End diff --
again, just let hte exception bubble up.
> PackagedProgram.extractContainedLibraries fails on Windows
> ----------------------------------------------------------
>
> Key: FLINK-9743
> URL: https://issues.apache.org/jira/browse/FLINK-9743
> Project: Flink
> Issue Type: Bug
> Components: Client, Job-Submission
> Affects Versions: 1.5.0, 1.4.2, 1.6.0
> Reporter: Chesnay Schepler
> Assignee: Sergey Nuyanzin
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.4.3, 1.5.2, 1.6.0
>
>
> Submitting a jar that contains other jars on Windows fails with an exception:
> {code}
> org.apache.flink.client.program.ProgramInvocationException: Unknown I/O error while extracting
contained jar files.
> at org.apache.flink.client.program.PackagedProgram.extractContainedLibraries(PackagedProgram.java:752)
> at org.apache.flink.client.program.PackagedProgram.<init>(PackagedProgram.java:194)
> at org.apache.flink.client.cli.CliFrontend.buildProgram(CliFrontend.java:833)
> at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:201)
> at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1020)
> at org.apache.flink.client.cli.CliFrontend.lambda$main$9(CliFrontend.java:1096)
> at org.apache.flink.runtime.security.NoOpSecurityContext.runSecured(NoOpSecurityContext.java:30)
> at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1096)
> Caused by: org.apache.flink.client.program.ProgramInvocationException: An I/O error occurred
while creating temporary file to extract nested library 'lib/antrunner.jar'.
> at org.apache.flink.client.program.PackagedProgram.extractContainedLibraries(PackagedProgram.java:708)
> ... 7 more
> Caused by: java.io.IOException: Unable to create temporary file, C:\Users\XXX\AppData\Local\Temp\1751416743_6922010711856647205lib\antrunner.jar
> at java.io.File$TempDirectory.generateFile(Unknown Source)
> at java.io.File.createTempFile(Unknown Source)
> at java.io.File.createTempFile(Unknown Source)
> at org.apache.flink.client.program.PackagedProgram.extractContainedLibraries(PackagedProgram.java:702)
> ... 7 more
> {code}
> {{PackagedProgram.extractContainedLibraries}} tries to replace all path separators using
the platform-dependent {{File.separateChar}}, however the path separator for jars (and zips
for that matter) is always {{/}}.
> {code}
> final JarEntry entry = containedJarFileEntries.get(i);
> String name = entry.getName();
> name = name.replace(File.separatorChar, '_');
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
|