Author: tomwhite Date: Wed Nov 28 14:43:28 2012 New Revision: 1414731 URL: http://svn.apache.org/viewvc?rev=1414731&view=rev Log: MAPREDUCE-4778. Fair scheduler event log is only written if directory exists on HDFS. Contributed by Sandy Ryza.
Added: hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/test/org/apache/hadoop/mapred/TestFairSchedulerEventLog.java (with props) Modified: hadoop/common/branches/branch-1/CHANGES.txt hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/java/org/apache/hadoop/mapred/FairSchedulerEventLog.java Modified: hadoop/common/branches/branch-1/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/CHANGES.txt?rev=1414731&r1=1414730&r2=1414731&view=diff ============================================================================== --- hadoop/common/branches/branch-1/CHANGES.txt (original) +++ hadoop/common/branches/branch-1/CHANGES.txt Wed Nov 28 14:43:28 2012 @@ -322,6 +322,9 @@ Release 1.2.0 - unreleased HADOOP-9099. TestNetUtils fails if "UnknownHost" is resolved as a valid hostname. (Ivan Mitic via szetszwo) + MAPREDUCE-4778. Fair scheduler event log is only written if directory + exists on HDFS. (Sandy Ryza via tomwhite) + Release 1.1.1 - Unreleased INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/java/org/apache/hadoop/mapred/FairSchedulerEventLog.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/java/org/apache/hadoop/mapred/FairSchedulerEventLog.java?rev=1414731&r1=1414730&r2=1414731&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/java/org/apache/hadoop/mapred/FairSchedulerEventLog.java (original) +++ hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/java/org/apache/hadoop/mapred/FairSchedulerEventLog.java Wed Nov 28 14:43:28 2012 @@ -76,12 +76,11 @@ class FairSchedulerEventLog { logDir = conf.get("mapred.fairscheduler.eventlog.location", new File(System.getProperty("hadoop.log.dir")).getAbsolutePath() + File.separator + "fairscheduler"); - Path logDirPath = new Path(logDir); - FileSystem fs = logDirPath.getFileSystem(conf); - if (!fs.exists(logDirPath)) { - if (!fs.mkdirs(logDirPath)) { + File logDirFile = new File(logDir); + if (!logDirFile.exists()) { + if (!logDirFile.mkdirs()) { throw new IOException( - "Mkdirs failed to create " + logDirPath.toString()); + "Mkdirs failed to create " + logDirFile.toString()); } } String username = System.getProperty("user.name"); @@ -125,6 +124,10 @@ class FairSchedulerEventLog { } } + String getLogFile() { + return logFile; + } + /** * Flush and close the log. */ Added: hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/test/org/apache/hadoop/mapred/TestFairSchedulerEventLog.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/test/org/apache/hadoop/mapred/TestFairSchedulerEventLog.java?rev=1414731&view=auto ============================================================================== --- hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/test/org/apache/hadoop/mapred/TestFairSchedulerEventLog.java (added) +++ hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/test/org/apache/hadoop/mapred/TestFairSchedulerEventLog.java Wed Nov 28 14:43:28 2012 @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.mapred; + +import java.io.File; +import java.io.IOException; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.mapred.TestFairScheduler.FakeTaskTrackerManager; + +public class TestFairSchedulerEventLog extends TestCase { + + private File logFile; + + /** + * Make sure the scheduler creates the event log. + */ + public void testCreateEventLog() throws IOException { + Configuration conf = new Configuration(); + conf.set("mapred.fairscheduler.eventlog.enabled", "true"); + + FakeTaskTrackerManager taskTrackerManager = new FakeTaskTrackerManager(1, 1); + + FairScheduler scheduler = new FairScheduler(); + scheduler.setConf(conf); + scheduler.setTaskTrackerManager(taskTrackerManager); + scheduler.start(); + + FairSchedulerEventLog eventLog = scheduler.getEventLog(); + + scheduler.terminate(); + + logFile = new File(eventLog.getLogFile()); + Assert.assertTrue(logFile.exists()); + } + + @Override + public void tearDown() { + logFile.delete(); + logFile.getParentFile().delete(); // fairscheduler/ + } +} Propchange: hadoop/common/branches/branch-1/src/contrib/fairscheduler/src/test/org/apache/hadoop/mapred/TestFairSchedulerEventLog.java ------------------------------------------------------------------------------ svn:eol-style = native