You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by om...@apache.org on 2011/03/04 05:13:59 UTC
svn commit: r1077429 - in
/hadoop/common/branches/branch-0.20-security-patches/src:
mapred/org/apache/hadoop/mapred/JobClient.java
test/org/apache/hadoop/mapred/TestCommandLineJobSubmission.java
Author: omalley
Date: Fri Mar 4 04:13:59 2011
New Revision: 1077429
URL: http://svn.apache.org/viewvc?rev=1077429&view=rev
Log:
commit d3166d2216c20177b5423d66323ec73c986b6b97
Author: Arun C Murthy <ac...@apache.org>
Date: Mon Apr 26 11:42:39 2010 -0700
MAPREDUCE-1641. Bug-fix to ensure command line options such as -files/-archives are checked for duplicate artifacts in the DistributedCache. Contributed by Amareshwari Sreeramadasu.
+++ b/YAHOO-CHANGES.txt
+ MAPREDUCE-1641. Bug-fix to ensure command line options such as
+ -files/-archives are checked for duplicate artifacts in the
+ DistributedCache. (Amareshwari Sreeramadasu via acmurthy)
+
Modified:
hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobClient.java
hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestCommandLineJobSubmission.java
Modified: hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobClient.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobClient.java?rev=1077429&r1=1077428&r2=1077429&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobClient.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobClient.java Fri Mar 4 04:13:59 2011
@@ -40,7 +40,6 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
-import javax.security.auth.login.LoginException;
import java.security.PrivilegedExceptionAction;
import org.apache.commons.logging.Log;
@@ -657,6 +656,8 @@ public class JobClient extends Configure
}
}
+ // First we check whether the cached archives and files are legal.
+ TrackerDistributedCacheManager.validate(job);
// set the timestamps of the archives and files
TrackerDistributedCacheManager.determineTimestamps(job);
// set the public/private visibility of the archives and files
@@ -766,9 +767,6 @@ public class JobClient extends Configure
(new Path("file:///" + binaryTokenFilename), jobCopy);
}
- // First we check whether the cached archives and files are legal.
- TrackerDistributedCacheManager.validate(jobCopy);
-
copyAndConfigureFiles(jobCopy, submitJobDir);
// get delegation token for the dir
Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestCommandLineJobSubmission.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestCommandLineJobSubmission.java?rev=1077429&r1=1077428&r2=1077429&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestCommandLineJobSubmission.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestCommandLineJobSubmission.java Fri Mar 4 04:13:59 2011
@@ -22,6 +22,7 @@ import java.io.FileOutputStream;
import junit.framework.TestCase;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.filecache.DistributedCache;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -80,12 +81,46 @@ public class TestCommandLineJobSubmissio
assertTrue("not failed ", ret != -1);
f.delete();
thisbuildDir.delete();
+
+ // test duplicate uris for options -files and -archives
+ testDuplicateURI(mr, dfs);
} finally {
if (dfs != null) {dfs.shutdown();};
if (mr != null) {mr.shutdown();};
}
}
+
+ private void testDuplicateURI(MiniMRCluster mr, MiniDFSCluster dfs)
+ throws Exception {
+ Configuration jobConf = mr.createJobConf();
+ FileSystem fs = dfs.getFileSystem();
+ Path dfsPath = new Path("/test/testjob.jar");
+ fs.copyFromLocalFile(new Path("build/test/testjar/testjob.jar"), dfsPath);
+ String url = fs.getDefaultUri(jobConf).toString() + dfsPath.toString();
+ String[] args = new String[6];
+ args[0] = "-files";
+ args[1] = url;
+ args[2] = "-archives";
+ args[3] = url;
+ args[4] = input.toString();
+ args[5] = output.toString();
+
+ Exception ex = null;
+ try {
+ int ret = ToolRunner
+ .run(jobConf, new testshell.ExternalMapReduce(), args);
+ } catch (Exception e) {
+ ex = e;
+ }
+ assertNotNull("No exception thrown", ex);
+ assertTrue("Exception is not InvalidJobConfException.",
+ ex instanceof InvalidJobConfException);
+ assertEquals("Wrong message for the exception", "The core URI, \"" + url
+ + "\" is listed both in " + DistributedCache.CACHE_FILES + " and in "
+ + DistributedCache.CACHE_ARCHIVES + " .", ex.getMessage());
+ }
+
@SuppressWarnings("unchecked")
private Class loadLibJar(JobConf jobConf) {
try {