Return-Path: X-Original-To: apmail-hadoop-hdfs-user-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 771C618415 for ; Fri, 11 Dec 2015 14:43:50 +0000 (UTC) Received: (qmail 28532 invoked by uid 500); 11 Dec 2015 14:43:45 -0000 Delivered-To: apmail-hadoop-hdfs-user-archive@hadoop.apache.org Received: (qmail 28377 invoked by uid 500); 11 Dec 2015 14:43:45 -0000 Mailing-List: contact user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list user@hadoop.apache.org Received: (qmail 28366 invoked by uid 99); 11 Dec 2015 14:43:45 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Dec 2015 14:43:45 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id E520A180ABE for ; Fri, 11 Dec 2015 14:43:44 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.121 X-Spam-Level: X-Spam-Status: No, score=-0.121 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id Rcze5g8zeyJD for ; Fri, 11 Dec 2015 14:43:44 +0000 (UTC) Received: from mail-oi0-f50.google.com (mail-oi0-f50.google.com [209.85.218.50]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id A954D265DB for ; Fri, 11 Dec 2015 14:43:43 +0000 (UTC) Received: by oiww189 with SMTP id w189so63703861oiw.3 for ; Fri, 11 Dec 2015 06:43:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=hP5lbC/3ieFzblssSC6fcHgYIYSoJcPC/iCYbjhDiYM=; b=kaiIe89HKEOLf7Q7VULYm/CbXse2F8hdsxTBV9Z7BAvetFvRpHL7vHVzDUfEd2zYtK JX3NJP/qhJN/rwCGCSB2sK4OpfUW0VuSYBQcaqdK8l4RMX7PJy1WY1kfJ4Vczca9NlGN KtRbYaMFGZhmhy8SaIR7sKPGmY4aiDyoheCRdU+FstsXAtW2pm7Fbg5MDsYkWl0tQ9dy EnAFC/SYd70a/CkXaeRswvhlqPaYmqvBqrDKVribhxzmK/jgSf56l8w9MNB5WKWsX43U zbweebopCNVHU+/aZLFDB3pfzEv2gMfOs/r6wCTVjaL4oB1CkiDG0PGtCbL7PpQP0JPc 6Spw== X-Received: by 10.202.206.130 with SMTP id e124mr13571074oig.132.1449845023082; Fri, 11 Dec 2015 06:43:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.202.188.135 with HTTP; Fri, 11 Dec 2015 06:43:23 -0800 (PST) In-Reply-To: References: From: Samuel Date: Fri, 11 Dec 2015 15:43:23 +0100 Message-ID: Subject: Re: Dependency on absolute path /bin/ls in Shell.java To: Namikaze Minato Cc: user@hadoop.apache.org Content-Type: text/plain; charset=UTF-8 I am not using hadoop-util directly, it is Spark code what uses it (i,e. not directly under my control). Regarding ls, for my particular use case it is fine if you use "ls" instead of "/bin/ls". However, I do agree that using ls to fetch file permissions is incorrect, so a better solution (in terms of code quality) would be not to use ls at all. On 11 December 2015 at 14:56, Namikaze Minato wrote: > So what you ultimately need is a piece of java code listing the rwx > permissions for user, group and others that is not using ls > internally, is that correct? > If "RawLocalFileSystem" is not HDFS, do you really need to use > hadoop-util for that? > Can you tell us more about your use case? > > Regards, > LLoyd > > > > > On 11 December 2015 at 13:05, Samuel wrote: >>> Using ls to figure out permissions is a bad design anyway, so I would >>> not be surprised if this hardcode was reported as a bug. >> >> Of course, I have no idea why it was implemented like this. I assume >> it was written at some point in time where Java didn't provide the >> needed APIS (?) >> >> Implementing the permission check without relying in ls at all is also >> a solution for the problem I have :) >> >>> LLoyd >>> >>> On 11 December 2015 at 09:19, Samuel wrote: >>> > Hi, >>> > >>> > I am experiencing some crashes when using spark over local files (mainly for >>> > testing). Some operations fail with >>> > >>> > java.lang.RuntimeException: Error while running command to get file >>> > permissions : java.io.IOException: Cannot run program "/bin/ls": error=2, No >>> > such file or directory >>> > at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) >>> > at org.apache.hadoop.util.Shell.runCommand(Shell.java:206) >>> > at org.apache.hadoop.util.Shell.run(Shell.java:188) >>> > at >>> > org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:381) >>> > at org.apache.hadoop.util.Shell.execCommand(Shell.java:467) >>> > at org.apache.hadoop.util.Shell.execCommand(Shell.java:450) >>> > at >>> > org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:593) >>> > at >>> > org.apache.hadoop.fs.RawLocalFileSystem.access$100(RawLocalFileSystem.java:51) >>> > at >>> > org.apache.hadoop.fs.RawLocalFileSystem$RawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:514) >>> > at >>> > org.apache.hadoop.fs.RawLocalFileSystem$RawLocalFileStatus.getPermission(RawLocalFileSystem.java:489) >>> > at >>> > org.apache.spark.sql.parquet.ParquetRelation2$$anonfun$buildScan$1$$anon$1$$anonfun$12.apply(newParquet.scala:292) >>> > >>> > etcetera... >>> > >>> > Which seems to be related to Shell.java in org.apache.hadoop-util, that uses >>> > ls -ld to figure out file permissions (that is in >>> > RawLocalFileSystem.loadPermissionsInfo). The problem is that instead of just >>> > calling ls, Shell .java calls /bin/ls, which is usually available, but in >>> > certain circumstances might not. Regardless of the reasons not to have ls in >>> > /bin, hardcoding the directory bans users from using the standard mechanisms >>> > to decide which binaries to run in their systems (in this case, $PATH), so I >>> > wonder if there is a particular reason why that path has been hardcoded to >>> > an absolute path instead to something resolvable using$PATH. >>> > >>> > Or in other words, is this a bug or a feature? >>> > >>> > Best >>> > >>> > -- >>> > Samuel >> >> >> >> >> -- >> Samuel -- Samuel --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@hadoop.apache.org For additional commands, e-mail: user-help@hadoop.apache.org