Github user uce commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1524#discussion_r50253604
  
    --- Diff: flink-core/src/main/java/org/apache/flink/core/fs/FileSystem.java 
---
    @@ -159,56 +164,91 @@ public int hashCode() {
        /**
         * Returns a reference to the {@link FileSystem} instance for accessing 
the
         * local file system.
    -    * 
    +    *
         * @return a reference to the {@link FileSystem} instance for accessing 
the
    -    *         local file system.
    +    * local file system.
         */
        public static FileSystem getLocalFileSystem() {
                // this should really never fail.
                try {
                        URI localUri = OperatingSystem.isWindows() ? new 
URI("file:/") : new URI("file:///");
                        return get(localUri);
    -           }
    -           catch (Exception e) {
    +           } catch (Exception e) {
                        throw new RuntimeException("Cannot create URI for local 
file system");
                }
        }
     
        /**
    +    * The default filesystem scheme to be used. This can be specified by 
the parameter
    +    * <code>fs.default-scheme</code> in <code>flink-conf.yaml</code>. By 
default this is
    +    * set to <code>file:///</code> and uses the local filesystem.
    +    * */
    +   private static URI defaultScheme;
    +
    +   /**
    +    * Sets the default filesystem scheme based on the user-specified 
configuration parameter
    +    * <code>fs.default-scheme</code>.
    +    * <li>
    +    * As an example, if set to <code>hdfs://localhost:9000/</code>, then 
an HDFS deployment
    +    * with the namenode being on the local node and listening to port 9000 
is going to be used.
    +    * In this case, a file path specified as 
<code>/user/USERNAME/in.txt</code>
    +    * is going to be transformed into 
<code>hdfs://localhost:9000/user/USERNAME/in.txt</code>. By
    +    * default this is set to <code>file:///</code> which points to the 
local filesystem.
    +    * @param config the configuration from where to fetch the parameter.
    +    * */
    +   public static void setDefaultScheme(Configuration config) throws 
IOException {
    +           if (defaultScheme == null) {
    +                   String stringifiedUri = 
config.getString(ConfigConstants.FILESYSTEM_SCHEME,
    +                           ConfigConstants.DEFAULT_FILESYSTEM_SCHEME);
    +                   try {
    +                           defaultScheme = new URI(stringifiedUri);
    +                   } catch (URISyntaxException e) {
    +                           throw new IOException("The URI used to set the 
default filesystem " +
    +                                   "scheme ('" + stringifiedUri + "') is 
not valid.");
    +                   }
    +           }
    +   }
    +
    +   /**
         * Returns a reference to the {@link FileSystem} instance for accessing 
the
         * file system identified by the given {@link URI}.
    -    * 
    -    * @param uri
    -    *        the {@link URI} identifying the file system
    +    *
    +    * @param uri the {@link URI} identifying the file system
         * @return a reference to the {@link FileSystem} instance for accessing 
the file system identified by the given
    -    *         {@link URI}.
    -    * @throws IOException
    -    *         thrown if a reference to the file system instance could not 
be obtained
    +    * {@link URI}.
    +    * @throws IOException thrown if a reference to the file system 
instance could not be obtained
         */
        public static FileSystem get(URI uri) throws IOException {
                FileSystem fs;
     
                synchronized (SYNCHRONIZATION_OBJECT) {
    -
                        if (uri.getScheme() == null) {
                                try {
    -                                   uri = new URI("file", null, 
uri.getPath(), null);
    -                           }
    -                           catch (URISyntaxException e) {
    +                                   if(defaultScheme == null) {
    --- End diff --
    
    formatting: we use `if (...)` (with whitespace after the keyword)


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to