Return-Path: X-Original-To: apmail-flink-issues-archive@minotaur.apache.org Delivered-To: apmail-flink-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4EC3918BBE for ; Thu, 28 Jan 2016 13:50:25 +0000 (UTC) Received: (qmail 89018 invoked by uid 500); 28 Jan 2016 13:50:25 -0000 Delivered-To: apmail-flink-issues-archive@flink.apache.org Received: (qmail 88977 invoked by uid 500); 28 Jan 2016 13:50:25 -0000 Mailing-List: contact issues-help@flink.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flink.apache.org Delivered-To: mailing list issues@flink.apache.org Received: (qmail 88968 invoked by uid 99); 28 Jan 2016 13:50:25 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 28 Jan 2016 13:50:25 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id A7B86C2F93 for ; Thu, 28 Jan 2016 13:50:24 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.98 X-Spam-Level: X-Spam-Status: No, score=0.98 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id zXaOMxjnLsKV for ; Thu, 28 Jan 2016 13:50:17 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with SMTP id 89F3631AEA for ; Thu, 28 Jan 2016 13:50:16 +0000 (UTC) Received: (qmail 87867 invoked by uid 99); 28 Jan 2016 13:50:15 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 28 Jan 2016 13:50:15 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 6FB6BDFF8E; Thu, 28 Jan 2016 13:50:15 +0000 (UTC) From: StephanEwen To: issues@flink.incubator.apache.org Reply-To: issues@flink.incubator.apache.org References: In-Reply-To: Subject: [GitHub] flink pull request: FLINK-2380: allow to specify the default files... Content-Type: text/plain Message-Id: <20160128135015.6FB6BDFF8E@git1-us-west.apache.org> Date: Thu, 28 Jan 2016 13:50:15 +0000 (UTC) Github user StephanEwen commented on a diff in the pull request: https://github.com/apache/flink/pull/1524#discussion_r51123709 --- Diff: flink-core/src/main/java/org/apache/flink/core/fs/FileSystem.java --- @@ -159,56 +163,109 @@ 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 + * fs.default-scheme in flink-conf.yaml. By default this is + * set to file:/// (see {@link ConfigConstants#FILESYSTEM_SCHEME} + * and {@link ConfigConstants#DEFAULT_FILESYSTEM_SCHEME}), and uses the local filesystem. + */ + private static URI defaultScheme; + + /** + *

Sets the default filesystem scheme based on the user-specified configuration parameter + * fs.default-scheme. By default this is set to file:/// + * (see {@link ConfigConstants#FILESYSTEM_SCHEME} and + * {@link ConfigConstants#DEFAULT_FILESYSTEM_SCHEME}), + * and the local filesystem is used. + *

+ * As an example, if set to hdfs://localhost:9000/, 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 /user/USERNAME/in.txt + * is going to be transformed into hdfs://localhost:9000/user/USERNAME/in.txt. By + * default this is set to file:/// which points to the local filesystem. + * @param config the configuration from where to fetch the parameter. + */ + public static void setDefaultScheme(Configuration config) throws IOException { + synchronized (SYNCHRONIZATION_OBJECT) { + 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."); + } + } + } + } + + /** + *

ATTENTION: this method is only used in tests.

+ *

Clears the previously set fs.default-scheme + * (see {@link ConfigConstants#FILESYSTEM_SCHEME})

+ */ + public static void clearDefaultScheme() { --- End diff -- This should not be public. Users do not read comments and simply call this. The tests probably need a custom reflection cleaner to reset that. --- 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 infrastructure@apache.org or file a JIRA ticket with INFRA. ---