Author: harsh Date: Tue Sep 25 11:10:11 2012 New Revision: 1389799 URL: http://svn.apache.org/viewvc?rev=1389799&view=rev Log: HADOOP-8436. NPE In getLocalPathForWrite ( path, conf ) when the required context item is not configured. Contributed by Brahma Reddy Battula. (harsh)
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/LocalDirAllocator.java hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalDirAllocator.java Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1389799&r1=1389798&r2=1389799&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Tue Sep 25 11:10:11 2012 @@ -234,6 +234,10 @@ Trunk (Unreleased) HADOOP-8815. RandomDatum needs to override hashCode(). (Brandon Li via suresh) + HADOOP-8436. NPE In getLocalPathForWrite ( path, conf ) when the + required context item is not configured + (Brahma Reddy Battula via harsh) + OPTIMIZATIONS HADOOP-7761. Improve the performance of raw comparisons. (todd) Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/LocalDirAllocator.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/LocalDirAllocator.java?rev=1389799&r1=1389798&r2=1389799&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/LocalDirAllocator.java (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/LocalDirAllocator.java Tue Sep 25 11:10:11 2012 @@ -265,6 +265,9 @@ public class LocalDirAllocator { private synchronized void confChanged(Configuration conf) throws IOException { String newLocalDirs = conf.get(contextCfgItemName); + if (null == newLocalDirs) { + throw new IOException(contextCfgItemName + " not configured"); + } if (!newLocalDirs.equals(savedLocalDirs)) { localDirs = StringUtils.getTrimmedStrings(newLocalDirs); localFS = FileSystem.getLocal(conf); Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalDirAllocator.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalDirAllocator.java?rev=1389799&r1=1389798&r2=1389799&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalDirAllocator.java (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalDirAllocator.java Tue Sep 25 11:10:11 2012 @@ -293,6 +293,23 @@ public class TestLocalDirAllocator { } } + /* + * Test when mapred.local.dir not configured and called + * getLocalPathForWrite + */ + @Test + public void testShouldNotthrowNPE() throws Exception { + Configuration conf1 = new Configuration(); + try { + dirAllocator.getLocalPathForWrite("/test", conf1); + fail("Exception not thrown when " + CONTEXT + " is not set"); + } catch (IOException e) { + assertEquals(CONTEXT + " not configured", e.getMessage()); + } catch (NullPointerException e) { + fail("Lack of configuration should not have thrown an NPE."); + } + } + /** Test no side effect files are left over. After creating a temp * temp file, remove both the temp file and its parent. Verify that * no files or directories are left over as can happen when File objects