[
https://issues.apache.org/jira/browse/FLINK-9743?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16533480#comment-16533480
]
ASF GitHub Bot commented on FLINK-9743:
---------------------------------------
GitHub user snuyanzin opened a pull request:
https://github.com/apache/flink/pull/6263
[FLINK-9743][Client] Use correct zip/jar path separator
## What is the purpose of the change
*This PR resolves libraries extraction issue from jars*
## Brief change log
- *Always in case of zip/jar use '/' path separator*
- *Test with generated jar emulating the real case*
## Verifying this change
- Added test generates fake jar with a structure
test.jar
|- lib
|--|- internalTest.jar
and then calls for `PackagedProgram#extractContainedLibraries` to check
if it extracts internalTest.jar correctly
## Does this pull request potentially affect one of the following parts:
- Dependencies (does it add or upgrade a dependency): (no)
- The public API, i.e., is any changed class annotated with
`@Public(Evolving)`: (no)
- The serializers: (no)
- The runtime per-record code paths (performance sensitive): (no)
- Anything that affects deployment or recovery: JobManager (and its
components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
- The S3 file system connector: (no)
## Documentation
- Does this pull request introduce a new feature? (no)
- If yes, how is the feature documented? (not applicable)
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/snuyanzin/flink FLINK_9743
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/flink/pull/6263.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #6263
----
commit 649b9f1a0893aea32bd2dc3cfa1702bfb77ab29f
Author: snuyanzin <snuyanzin@...>
Date: 2018-07-05T08:58:33Z
[FLINK-9743] use correct zip path separator,
PackagedProgramTest#testExtractContainedLibraries to check
PackagedProgram#extractContainedLibraries
----
> 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.6.0, 1.4.3, 1.5.2
>
>
> 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)