You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ac...@apache.org on 2010/06/23 19:52:25 UTC
svn commit: r957283 - in /hadoop/mapreduce/trunk: CHANGES.txt
src/java/org/apache/hadoop/mapred/CompletedJobStatusStore.java
src/test/mapred/org/apache/hadoop/mapred/TestJobStatusPersistency.java
Author: acmurthy
Date: Wed Jun 23 17:52:25 2010
New Revision: 957283
URL: http://svn.apache.org/viewvc?rev=957283&view=rev
Log:
MAPREDUCE-1788. Ensure failure to setup CompletedJobStatusStore is not silently ignored by the JobTracker. Contributed by Krishna Ramachandran.
Modified:
hadoop/mapreduce/trunk/CHANGES.txt
hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapred/CompletedJobStatusStore.java
hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapred/TestJobStatusPersistency.java
Modified: hadoop/mapreduce/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/CHANGES.txt?rev=957283&r1=957282&r2=957283&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/CHANGES.txt (original)
+++ hadoop/mapreduce/trunk/CHANGES.txt Wed Jun 23 17:52:25 2010
@@ -64,6 +64,9 @@ Trunk (unreleased changes)
MAPREDUCE-1868. Add a read and connection timeout to JobClient while
pulling tasklogs. (Krishna Ramachandran via acmurthy)
+ MAPREDUCE-1788. Ensure failure to setup CompletedJobStatusStore is not
+ silently ignored by the JobTracker. (Krishna Ramachandran via acmurthy)
+
OPTIMIZATIONS
MAPREDUCE-1354. Enhancements to JobTracker for better performance and
Modified: hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapred/CompletedJobStatusStore.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapred/CompletedJobStatusStore.java?rev=957283&r1=957282&r2=957283&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapred/CompletedJobStatusStore.java (original)
+++ hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapred/CompletedJobStatusStore.java Wed Jun 23 17:52:25 2010
@@ -31,6 +31,9 @@ import org.apache.hadoop.mapreduce.JobAC
import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.AccessControlException;
+import org.apache.hadoop.fs.permission.FsAction;
+import org.apache.hadoop.fs.permission.FsPermission;
+import org.apache.hadoop.util.DiskChecker.DiskErrorException;
/**
* Persists and retrieves the Job info of a job into/from DFS.
@@ -56,6 +59,8 @@ class CompletedJobStatusStore implements
private static long HOUR = 1000 * 60 * 60;
private static long SLEEP_TIME = 1 * HOUR;
+ final static FsPermission JOB_STATUS_STORE_DIR_PERMISSION = FsPermission
+ .createImmutable((short) 0750); // rwxr-x--
CompletedJobStatusStore(JobACLsManager aclsManager, Configuration conf)
throws IOException {
@@ -74,12 +79,24 @@ class CompletedJobStatusStore implements
// set the fs
this.fs = path.getFileSystem(conf);
if (!fs.exists(path)) {
- if (!fs.mkdirs(path)) {
- active = false;
- LOG.warn("Couldn't create " + jobInfoDir
- + ". CompletedJobStore will be inactive.");
- return;
- }
+ if (!fs.mkdirs(path, new FsPermission(JOB_STATUS_STORE_DIR_PERMISSION))) {
+ throw new IOException(
+ "CompletedJobStatusStore mkdirs failed to create "
+ + path.toString());
+ }
+ } else {
+ FileStatus stat = fs.getFileStatus(path);
+ FsPermission actual = stat.getPermission();
+ if (!stat.isDir())
+ throw new DiskErrorException("not a directory: "
+ + path.toString());
+ FsAction user = actual.getUserAction();
+ if (!user.implies(FsAction.READ))
+ throw new DiskErrorException("directory is not readable: "
+ + path.toString());
+ if (!user.implies(FsAction.WRITE))
+ throw new DiskErrorException("directory is not writable: "
+ + path.toString());
}
if (retainTime == 0) {
Modified: hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapred/TestJobStatusPersistency.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapred/TestJobStatusPersistency.java?rev=957283&r1=957282&r2=957283&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapred/TestJobStatusPersistency.java (original)
+++ hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapred/TestJobStatusPersistency.java Wed Jun 23 17:52:25 2010
@@ -21,6 +21,7 @@ import java.io.File;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.io.IOException;
import java.util.Properties;
import org.apache.hadoop.fs.FileSystem;
@@ -169,15 +170,16 @@ public class TestJobStatusPersistency ex
config.set(JTConfig.JT_PERSIST_JOBSTATUS_HOURS, "1");
config.set(JTConfig.JT_PERSIST_JOBSTATUS_DIR, new Path(parent,
"child").toUri().getPath());
- mr = new MiniMRCluster(0, "file:///", 4, null, null, config);
- assertFalse(
- "CompletedJobStore is unexpectly active!",
- mr.getJobTrackerRunner().getJobTracker().completedJobStatusStore.isActive());
+ boolean started = true;
+ JobConf conf = MiniMRCluster.configureJobConf(config, "file:///", 0, 0, null);
+ try {
+ JobTracker jt = JobTracker.startTracker(conf);
+ } catch (IOException ex) {
+ started = false;
+ }
+ assertFalse(started);
} finally {
new File(parent.toUri().getPath()).setWritable(true, false);
- if (mr != null) {
- mr.shutdown();
- }
}
}
}