From core-commits-return-4209-apmail-hadoop-core-commits-archive=hadoop.apache.org@hadoop.apache.org Mon Mar 03 20:15:32 2008 Return-Path: Delivered-To: apmail-hadoop-core-commits-archive@www.apache.org Received: (qmail 70525 invoked from network); 3 Mar 2008 20:15:32 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Mar 2008 20:15:32 -0000 Received: (qmail 8316 invoked by uid 500); 3 Mar 2008 20:15:27 -0000 Delivered-To: apmail-hadoop-core-commits-archive@hadoop.apache.org Received: (qmail 8293 invoked by uid 500); 3 Mar 2008 20:15:27 -0000 Mailing-List: contact core-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: core-dev@hadoop.apache.org Delivered-To: mailing list core-commits@hadoop.apache.org Received: (qmail 8284 invoked by uid 99); 3 Mar 2008 20:15:27 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Mar 2008 12:15:27 -0800 X-ASF-Spam-Status: No, hits=-1998.9 required=10.0 tests=ALL_TRUSTED,FB_GET_MEDS X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Mar 2008 20:14:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 98F7C1A9832; Mon, 3 Mar 2008 12:15:07 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r633257 - in /hadoop/core/trunk: ./ src/java/org/apache/hadoop/dfs/ src/java/org/apache/hadoop/mapred/ src/java/org/apache/hadoop/security/ Date: Mon, 03 Mar 2008 20:14:59 -0000 To: core-commits@hadoop.apache.org From: rangadi@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080303201507.98F7C1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rangadi Date: Mon Mar 3 12:14:55 2008 New Revision: 633257 URL: http://svn.apache.org/viewvc?rev=633257&view=rev Log: HADOOP-2833. Do not use "Dr. Who" as the default user in JobClient. A valid user name is required. (Tsz Wo (Nicholas), SZE via rangadi) Modified: hadoop/core/trunk/CHANGES.txt hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DFSClient.java hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DistributedFileSystem.java hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java hadoop/core/trunk/src/java/org/apache/hadoop/security/UnixUserGroupInformation.java Modified: hadoop/core/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=633257&r1=633256&r2=633257&view=diff ============================================================================== --- hadoop/core/trunk/CHANGES.txt (original) +++ hadoop/core/trunk/CHANGES.txt Mon Mar 3 12:14:55 2008 @@ -40,6 +40,9 @@ IMPROVEMENTS + HADOOP-2833. Do not use "Dr. Who" as the default user in JobClient. + A valid user name is required. (Tsz Wo (Nicholas), SZE via rangadi) + HADOOP-2655. Copy on write for data and metadata files in the presence of snapshots. Needed for supporting appends to HDFS files. (dhruba) Modified: hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DFSClient.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DFSClient.java?rev=633257&r1=633256&r2=633257&view=diff ============================================================================== --- hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DFSClient.java (original) +++ hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DFSClient.java Mon Mar 3 12:14:55 2008 @@ -56,10 +56,11 @@ * ********************************************************/ class DFSClient implements FSConstants { - public static final Log LOG = LogFactory.getLog("org.apache.hadoop.fs.DFSClient"); + public static final Log LOG = LogFactory.getLog(DFSClient.class); static final int MAX_BLOCK_ACQUIRE_FAILURES = 3; private static final int TCP_WINDOW_SIZE = 128 * 1024; // 128 KB ClientProtocol namenode; + final UnixUserGroupInformation ugi; volatile boolean clientRunning = true; Random r = new Random(); String clientName; @@ -140,6 +141,13 @@ this.socketTimeout = conf.getInt("dfs.socket.timeout", FSConstants.READ_TIMEOUT); this.socketFactory = NetUtils.getSocketFactory(conf, ClientProtocol.class); + + try { + this.ugi = UnixUserGroupInformation.login(conf, true); + } catch (LoginException e) { + throw (IOException)(new IOException().initCause(e)); + } + this.namenode = createNamenode(nameNodeAddr, conf); String taskId = conf.get("mapred.task.id"); if (taskId != null) { Modified: hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DistributedFileSystem.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DistributedFileSystem.java?rev=633257&r1=633256&r2=633257&view=diff ============================================================================== --- hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DistributedFileSystem.java (original) +++ hadoop/core/trunk/src/java/org/apache/hadoop/dfs/DistributedFileSystem.java Mon Mar 3 12:14:55 2008 @@ -100,6 +100,11 @@ workingDir = makeAbsolute(dir); } + /** {@inheritDoc} */ + public Path getHomeDirectory() { + return new Path("/user/" + dfs.ugi.getUserName()).makeQualified(this); + } + private String getPathName(Path file) { checkPath(file); String result = makeAbsolute(file).toUri().getPath(); Modified: hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java?rev=633257&r1=633256&r2=633257&view=diff ============================================================================== --- hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java (original) +++ hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java Mon Mar 3 12:14:55 2008 @@ -458,13 +458,12 @@ * set this user's id in job configuration, so later job files can be * accessed using this user's id */ + UnixUserGroupInformation ugi = null; try { - UnixUserGroupInformation.saveToConf(job, - UnixUserGroupInformation.UGI_PROPERTY_NAME, UnixUserGroupInformation - .login(job)); + ugi = UnixUserGroupInformation.login(job, true); } catch (LoginException e) { - throw new IOException("Failed to get the current user's information: " - + e.getMessage()); + throw (IOException)(new IOException( + "Failed to get the current user's information.").initCause(e)); } // @@ -527,8 +526,7 @@ } // Set the user's name and working directory - String user = System.getProperty("user.name"); - job.setUser(user != null ? user : "Dr Who"); + job.setUser(ugi.getUserName()); if (job.getWorkingDirectory() == null) { job.setWorkingDirectory(fs.getWorkingDirectory()); } Modified: hadoop/core/trunk/src/java/org/apache/hadoop/security/UnixUserGroupInformation.java URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/security/UnixUserGroupInformation.java?rev=633257&r1=633256&r2=633257&view=diff ============================================================================== --- hadoop/core/trunk/src/java/org/apache/hadoop/security/UnixUserGroupInformation.java (original) +++ hadoop/core/trunk/src/java/org/apache/hadoop/security/UnixUserGroupInformation.java Mon Mar 3 12:14:55 2008 @@ -251,6 +251,12 @@ } } + /** Equivalent to login(conf, false). */ + public static UnixUserGroupInformation login(Configuration conf) + throws LoginException { + return login(conf, false); + } + /** Get a user's name & its group names from the given configuration; * If it is not defined in the configuration, get the current user's * information from Unix. @@ -258,16 +264,20 @@ * the UGI map. * * @param conf either a job configuration or client's configuration + * @param save saving it to conf? * @return UnixUserGroupInformation a user/group information * @exception LoginException if not able to get the user/group information */ - public static UnixUserGroupInformation login(Configuration conf) - throws LoginException { + public static UnixUserGroupInformation login(Configuration conf, boolean save + ) throws LoginException { UnixUserGroupInformation ugi = readFromConf(conf, UGI_PROPERTY_NAME); if (ugi == null) { ugi = login(); LOG.debug("Unix Login: " + ugi); - } + if (save) { + saveToConf(conf, UGI_PROPERTY_NAME, ugi); + } + } return ugi; }