[
https://issues.apache.org/jira/browse/FLINK-4297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15405886#comment-15405886
]
ASF GitHub Bot commented on FLINK-4297:
---------------------------------------
Github user StephanEwen commented on a diff in the pull request:
https://github.com/apache/flink/pull/2320#discussion_r73333859
--- Diff:
flink-yarn/src/main/java/org/apache/flink/yarn/cli/FlinkYarnSessionCli.java ---
@@ -260,8 +263,15 @@ public AbstractYarnClusterDescriptor
createDescriptor(String defaultApplicationN
} else {
LOG.info("No path for the flink jar passed. Using the
location of "
+ yarnClusterDescriptor.getClass() + " to
locate the jar");
- localJarPath = new Path("file://" +
-
yarnClusterDescriptor.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
+ String encodedJarPath =
+
yarnClusterDescriptor.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
+ try {
+ // we have to decode the url encoded parts of
the path
+ localJarPath = new Path("file://" +
URLDecoder.decode(encodedJarPath, Charset.defaultCharset().name()));
--- End diff --
I think manually coding the `file:// + path` URIs have cross-platform
issues.
For File URIs, I found it to be best to go with
```java
new File(string).toURI()
```
or in that specific case:
```java
localJarPath = new Path(new File(URLDecoder.decode(encodedJarPath,
Charset.defaultCharset().name())).toURI());
or
localJarPath = new Path(new URI("file", null,
URLDecoder.decode(encodedJarPath, Charset.defaultCharset().name()), null));
```
> Yarn client can't determine fat jar location if path contains spaces
> --------------------------------------------------------------------
>
> Key: FLINK-4297
> URL: https://issues.apache.org/jira/browse/FLINK-4297
> Project: Flink
> Issue Type: Bug
> Components: YARN Client
> Reporter: Maximilian Michels
> Assignee: Maximilian Michels
> Fix For: 1.1.0, 1.2.0
>
>
> The code that automatically determines the fat jar path through the
> ProtectionDomain of the Yarn class, receives a possibly URL encoded path
> string. We need to decode using the system locale encoding, otherwise we can
> receive errors of the following when spaces are in the file path:
> {noformat}
> Caused by: java.io.FileNotFoundException: File
> file:/Users/max/Downloads/release-testing/flink-1.1.0-rc1/flink-1.1.0/build%20target/lib/flink-dist_2.11-1.1.0.jar
> does not exist
> at
> org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:511)
> at
> org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:724)
> at
> org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:501)
> at
> org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:397)
> at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:337)
> at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:289)
> at
> org.apache.hadoop.fs.LocalFileSystem.copyFromLocalFile(LocalFileSystem.java:82)
> at
> org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1836)
> at org.apache.flink.yarn.Utils.setupLocalResource(Utils.java:129)
> at
> org.apache.flink.yarn.AbstractYarnClusterDescriptor.deployInternal(AbstractYarnClusterDescriptor.java:616)
> at
> org.apache.flink.yarn.AbstractYarnClusterDescriptor.deploy(AbstractYarnClusterDescriptor.java:365)
> ... 6 more
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)