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 04:44:19 UTC
svn commit: r1077133 - in
/hadoop/common/branches/branch-0.20-security-patches/src:
mapred/org/apache/hadoop/mapred/TaskTracker.java
test/org/apache/hadoop/mapred/TestTaskTrackerLocalization.java
Author: omalley
Date: Fri Mar 4 03:44:18 2011
New Revision: 1077133
URL: http://svn.apache.org/viewvc?rev=1077133&view=rev
Log:
commit f1e5da4123246f98124a516e93ecdfa3104d9f9c
Author: Hemanth Yamijala <yhemanth@friendchild-lm.(none)>
Date: Fri Jan 29 00:00:30 2010 +0530
MAPREDUCE:842 (follow-up patch to fix a backport bug) from https://issues.apache.org/jira/secure/attachment/12431690/MR-842-follow-up.patch
+++ b/YAHOO-CHANGES.txt
+ MAPREDUCE-842. Fixing a bug in the earlier version of the patch
+ related to improper localization of the job token file.
+ (Ravi Gummadi via yhemanth)
+
Modified:
hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/TaskTracker.java
hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestTaskTrackerLocalization.java
Modified: hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/TaskTracker.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/TaskTracker.java?rev=1077133&r1=1077132&r2=1077133&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/TaskTracker.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/TaskTracker.java Fri Mar 4 03:44:18 2011
@@ -922,8 +922,7 @@ public class TaskTracker
rjob.jobConf = localJobConf;
rjob.keepJobFiles = ((localJobConf.getKeepTaskFilesPattern() != null) ||
localJobConf.getKeepFailedTaskFiles());
- // save local copy of JobToken file
- localizeJobTokenFile(t.getUser(), jobId, localJobConf);
+
TokenStorage ts = TokenCache.loadTokens(rjob.jobConf);
Token<JobTokenIdentifier> jt = (Token<JobTokenIdentifier>)ts.getJobToken();
getJobTokenSecretManager().addTokenForJob(jobId.toString(), jt);
@@ -985,6 +984,9 @@ public class TaskTracker
// Download the job.jar for this job from the system FS
localizeJobJarFile(userName, jobId, userFs, localJobConf);
+ // save local copy of JobToken file
+ localizeJobTokenFile(userName, jobId, localJobConf);
+
return localJobConf;
}
Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestTaskTrackerLocalization.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestTaskTrackerLocalization.java?rev=1077133&r1=1077132&r2=1077133&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestTaskTrackerLocalization.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestTaskTrackerLocalization.java Fri Mar 4 03:44:18 2011
@@ -33,7 +33,10 @@ import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.LocalDirAllocator;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.server.tasktracker.Localizer;
+import org.apache.hadoop.mapreduce.security.SecureShuffleUtils;
+import org.apache.hadoop.mapreduce.security.token.JobTokenIdentifier;
import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.util.Shell;
import org.apache.hadoop.util.StringUtils;
import org.apache.hadoop.mapred.JvmManager.JvmEnv;
@@ -129,6 +132,7 @@ public class TestTaskTrackerLocalization
// for test case system FS is the local FS
tracker.systemFS = FileSystem.getLocal(trackerFConf);
+ tracker.systemDirectory = new Path(TEST_ROOT_DIR.getAbsolutePath());
tracker.setLocalFileSystem(tracker.systemFS);
taskTrackerUGI = UserGroupInformation.login(trackerFConf);
@@ -142,6 +146,9 @@ public class TestTaskTrackerLocalization
new MapTask(jobConfFile.toURI().toString(), taskId, 1, null, 1);
task.setConf(jobConf); // Set conf. Set user name in particular.
+ // create jobTokens file
+ uploadJobTokensFile();
+
taskController = new DefaultTaskController();
taskController.setConf(trackerFConf);
taskController.setup();
@@ -189,6 +196,25 @@ public class TestTaskTrackerLocalization
return jobConfFile;
}
+ /**
+ * create fake JobTokens file
+ * @return
+ * @throws IOException
+ */
+ protected void uploadJobTokensFile() throws IOException {
+
+ File dir = new File(TEST_ROOT_DIR, jobId.toString());
+ if(!dir.exists())
+ assertTrue("faild to create dir="+dir.getAbsolutePath(), dir.mkdirs());
+
+ File jobTokenFile = new File(dir, SecureShuffleUtils.JOB_TOKEN_FILENAME);
+ FileOutputStream fos = new FileOutputStream(jobTokenFile);
+ java.io.DataOutputStream out = new java.io.DataOutputStream(fos);
+ Token<JobTokenIdentifier> jt = new Token<JobTokenIdentifier>();
+ jt.write(out); // writing empty file, we don't need the keys for this test
+ out.close();
+ }
+
@Override
protected void tearDown()
throws Exception {