<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hadoop 1.0.4 Release Notes</title>
<STYLE type="text/css">
		H1 {font-family: sans-serif}
		H2 {font-family: sans-serif; margin-left: 7mm}
		TABLE {margin-left: 7mm}
	</STYLE>
</head>
<body>
<h1>Hadoop 1.0.4 Release Notes</h1>
		These release notes include new developer and user-facing incompatibilities, features, and major improvements. 

<a name="changes"/>

<h2>Changes since Hadoop 1.0.3</h2>

<h3>Jiras with Release Notes (describe major or incompatible changes)</h3>
<ul>

</ul>


<h3>Other Jiras (describe bug fixes and minor changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7154">HADOOP-7154</a>.
     Minor improvement reported by tlipcon and fixed by tlipcon (scripts)<br>
     <b>Should set MALLOC_ARENA_MAX in hadoop-config.sh</b><br>
     <blockquote>New versions of glibc present in RHEL6 include a new arena allocator design. In several clusters we&apos;ve seen this new allocator cause huge amounts of virtual memory to be used, since when multiple threads perform allocations, they each get their own memory arena. On a 64-bit system, these arenas are 64M mappings, and the maximum number of arenas is 8 times the number of cores. We&apos;ve observed a DN process using 14GB of vmem for only 300M of resident set. This causes all kinds of nasty issues fo...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3652">HDFS-3652</a>.
     Blocker bug reported by tlipcon and fixed by tlipcon (name-node)<br>
     <b>1.x: FSEditLog failure removes the wrong edit stream when storage dirs have same name</b><br>
     <blockquote>In {{FSEditLog.removeEditsForStorageDir}}, we iterate over the edits streams trying to find the stream corresponding to a given dir. To check equality, we currently use the following condition:<br>{code}<br>      File parentDir = getStorageDirForStream(idx);<br>      if (parentDir.getName().equals(sd.getRoot().getName())) {<br>{code}<br>... which is horribly incorrect. If two or more storage dirs happen to have the same terminal path component (eg /data/1/nn and /data/2/nn) then it will pick the wrong strea...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-4399">MAPREDUCE-4399</a>.
     Major bug reported by vicaya and fixed by vicaya (performance, tasktracker)<br>
     <b>Fix performance regression in shuffle </b><br>
     <blockquote>There is a significant (up to 3x) performance regression in shuffle (vs 0.20.2) in the Hadoop 1.x series. Most noticeable with high-end switches.</blockquote></li>


</ul>


<h2>Changes since Hadoop 1.0.2</h2>

<h3>Jiras with Release Notes (describe major or incompatible changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5528">HADOOP-5528</a>.
     Major new feature reported by klbostee and fixed by klbostee <br>
     <b>Binary partitioner</b><br>
     <blockquote>                                              New BinaryPartitioner that partitions BinaryComparable keys by hashing a configurable part of the bytes array corresponding to the key.

      
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8352">HADOOP-8352</a>.
     Major improvement reported by owen.omalley and fixed by owen.omalley <br>
     <b>We should always generate a new configure script for the c++ code</b><br>
     <blockquote>If you are compiling c++, the configure script will now be automatically regenerated as it should be.<br>This requires autoconf version 2.61 or greater.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-4017">MAPREDUCE-4017</a>.
     Trivial improvement reported by knoguchi and fixed by tgraves (jobhistoryserver, jobtracker)<br>
     <b>Add jobname to jobsummary log</b><br>
     <blockquote>                                              The Job Summary log may contain commas in values that are escaped by a &#39;\&#39; character.  This was true before, but is more likely to be exposed now. 

      
</blockquote></li>

</ul>


<h3>Other Jiras (describe bug fixes and minor changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6924">HADOOP-6924</a>.
     Major bug reported by wattsteve and fixed by devaraj <br>
     <b>Build fails with non-Sun JREs due to different pathing to the operating system architecture shared libraries</b><br>
     <blockquote>The src/native/configure script used to build the native libraries has an environment variable called JNI_LDFLAGS which is set as follows:<br><br>JNI_LDFLAGS=&quot;-L$JAVA_HOME/jre/lib/$OS_ARCH/server&quot;<br><br>This pathing convention to the shared libraries for the operating system architecture is unique to Oracle/Sun Java and thus on other flavors of Java the path will not exist and will result in a build failure with the following exception:<br><br>     [exec] gcc -shared  ../src/org/apache/hadoop/io/compress/zlib...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6941">HADOOP-6941</a>.
     Major bug reported by wattsteve and fixed by devaraj <br>
     <b>Support non-SUN JREs in UserGroupInformation</b><br>
     <blockquote>Attempting to format the namenode or attempting to start Hadoop using Apache Harmony or the IBM Java JREs results in the following exception:<br><br>10/09/07 16:35:05 ERROR namenode.NameNode: java.lang.NoClassDefFoundError: com.sun.security.auth.UnixPrincipal<br>	at org.apache.hadoop.security.UserGroupInformation.&lt;clinit&gt;(UserGroupInformation.java:223)<br>	at java.lang.J9VMInternals.initializeImpl(Native Method)<br>	at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)<br>	at org.apache.hadoop.hdfs.ser...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6963">HADOOP-6963</a>.
     Critical bug reported by owen.omalley and fixed by raviprak (fs)<br>
     <b>Fix FileUtil.getDU. It should not include the size of the directory or follow symbolic links</b><br>
     <blockquote>The getDU method should not include the size of the directory. The Java interface says that the value is undefined and in Linux/Sun it gets the 4096 for the inode. Clearly this isn&apos;t useful.<br>It also recursively calls itself. In case the directory has a symbolic link forming a cycle, getDU keeps spinning in the cycle. In our case, we saw this in the org.apache.hadoop.mapred.JobLocalizer.downloadPrivateCacheObjects call. This prevented other tasks on the same node from committing, causing the T...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7381">HADOOP-7381</a>.
     Major bug reported by jrottinghuis and fixed by jrottinghuis (build)<br>
     <b>FindBugs OutOfMemoryError</b><br>
     <blockquote>When running the findbugs target from Jenkins, I get an OutOfMemory error.<br>The &quot;effort&quot; in FindBugs is set to Max which ends up using a lot of memory to go through all the classes. The jvmargs passed to FindBugs is hardcoded to 512 MB max.<br><br>We can leave the default to 512M, as long as we pass this as an ant parameter which can be overwritten in individual cases through -D, or in the build.properties file (either basedir, or user&apos;s home directory).<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8027">HADOOP-8027</a>.
     Minor improvement reported by qwertymaniac and fixed by atm (metrics)<br>
     <b>Visiting /jmx on the daemon web interfaces may print unnecessary error in logs</b><br>
     <blockquote>Logs that follow a {{/jmx}} servlet visit:<br><br>{code}<br>11/11/22 12:09:52 ERROR jmx.JMXJsonServlet: getting attribute UsageThreshold of java.lang:type=MemoryPool,name=Par Eden Space threw an exception<br>javax.management.RuntimeMBeanException: java.lang.UnsupportedOperationException: Usage threshold is not supported<br>	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrow(DefaultMBeanServerInterceptor.java:856)<br>...<br>{code}</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8151">HADOOP-8151</a>.
     Major bug reported by tlipcon and fixed by mattf (io, native)<br>
     <b>Error handling in snappy decompressor throws invalid exceptions</b><br>
     <blockquote>SnappyDecompressor.c has the following code in a few places:<br>{code}<br>    THROW(env, &quot;Ljava/lang/InternalError&quot;, &quot;Could not decompress data. Buffer length is too small.&quot;);<br>{code}<br>this is incorrect, though, since the THROW macro doesn&apos;t need the &quot;L&quot; before the class name. This results in a ClassNotFoundException for Ljava.lang.InternalError being thrown, instead of the intended exception.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8188">HADOOP-8188</a>.
     Major improvement reported by devaraj and fixed by devaraj <br>
     <b>Fix the build process to do with jsvc, with IBM&apos;s JDK as the underlying jdk</b><br>
     <blockquote>When IBM JDK is used as the underlying JDK for the build process, the build of jsvc fails. I just needed to add an extra &quot;os arch&quot; expression in the condition that sets os-arch.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8251">HADOOP-8251</a>.
     Blocker bug reported by tlipcon and fixed by tlipcon (security)<br>
     <b>SecurityUtil.fetchServiceTicket broken after HADOOP-6941</b><br>
     <blockquote>HADOOP-6941 replaced direct references to some classes with reflective access so as to support other JDKs. Unfortunately there was a mistake in the name of the Krb5Util class, which broke fetchServiceTicket. This manifests itself as the inability to run checkpoints or other krb5-SSL HTTP-based transfers:<br><br>java.lang.ClassNotFoundException: sun.security.jgss.krb5</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8293">HADOOP-8293</a>.
     Major bug reported by owen.omalley and fixed by owen.omalley (build)<br>
     <b>The native library&apos;s Makefile.am doesn&apos;t include JNI path</b><br>
     <blockquote>When compiling on centos 6, I get the following error when compiling the native library:<br><br>{code}<br> [exec] /usr/bin/ld: cannot find -ljvm<br>{code}<br><br>The problem is simply that the Makefile.am libhadoop_la_LDFLAGS doesn&apos;t include AM_LDFLAGS.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8294">HADOOP-8294</a>.
     Critical bug reported by kihwal and fixed by kihwal (ipc)<br>
     <b>IPC Connection becomes unusable even if server address was temporarilly unresolvable</b><br>
     <blockquote>This is same as HADOOP-7428, but was observed on 1.x data nodes. This can happen more frequently after HADOOP-7472, which allows IPC Connection to re-resolve the name. HADOOP-7428 needs to be back-ported.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8338">HADOOP-8338</a>.
     Major bug reported by owen.omalley and fixed by owen.omalley (security)<br>
     <b>Can&apos;t renew or cancel HDFS delegation tokens over secure RPC</b><br>
     <blockquote>The fetchdt tool is failing for secure deployments when given --renew or --cancel on tokens fetched using RPC. (The tokens fetched over HTTP can be renewed and canceled fine.)</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8346">HADOOP-8346</a>.
     Blocker bug reported by tucu00 and fixed by devaraj (security)<br>
     <b>Changes to support Kerberos with non Sun JVM (HADOOP-6941) broke SPNEGO</b><br>
     <blockquote>before HADOOP-6941 hadoop-auth testcases with Kerberos ON pass, *mvn test -PtestKerberos*<br><br>after HADOOP-6941 the tests fail with the error below.<br><br>Doing some IDE debugging I&apos;ve found out that the changes in HADOOP-6941 are making the JVM Kerberos libraries to append an extra element to the kerberos principal of the server (on the client side when creating the token) so *HTTP/localhost* ends up being *HTTP/localhost/localhost*. Then, when contacting the KDC to get the granting ticket, the serv...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-119">HDFS-119</a>.
     Major bug reported by shv and fixed by sureshms (name-node)<br>
     <b>logSync() may block NameNode forever.</b><br>
     <blockquote># {{FSEditLog.logSync()}} first waits until {{isSyncRunning}} is false and then performs syncing to file streams by calling {{EditLogOutputStream.flush()}}.<br>If an exception is thrown after {{isSyncRunning}} is set to {{true}} all threads will always wait on this condition.<br>An {{IOException}} may be thrown by {{EditLogOutputStream.setReadyToFlush()}} or a {{RuntimeException}} may be thrown by {{EditLogOutputStream.flush()}} or by {{processIOError()}}.<br># The loop that calls {{eStream.flush()}} ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1041">HDFS-1041</a>.
     Major bug reported by szetszwo and fixed by szetszwo (hdfs client)<br>
     <b>DFSClient does not retry in getFileChecksum(..)</b><br>
     <blockquote>If connection to the first datanode fails, DFSClient does not retry in getFileChecksum(..).</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3061">HDFS-3061</a>.
     Blocker bug reported by alex.holmes and fixed by kihwal (name-node)<br>
     <b>Cached directory size in INodeDirectory can get permantently out of sync with computed size, causing quota issues</b><br>
     <blockquote>It appears that there&apos;s a condition under which a HDFS directory with a space quota set can get to a point where the cached size for the directory can permanently differ from the computed value.  When this happens the following command:<br><br>{code}<br>hadoop fs -count -q /tmp/quota-test<br>{code}<br><br>results in the following output in the NameNode logs:<br><br>{code}<br>WARN org.apache.hadoop.hdfs.server.namenode.NameNode: Inconsistent diskspace for directory quota-test. Cached: 6000 Computed: 6072<br>{code}<br><br>I&apos;ve ob...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3127">HDFS-3127</a>.
     Major bug reported by brandonli and fixed by brandonli (name-node)<br>
     <b>failure in recovering removed storage directories should not stop checkpoint process</b><br>
     <blockquote>When a restore fails, rollEditLog() also fails even if there are healthy directories. Any exceptions from recovering the removed directories should not fail checkpoint process.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3265">HDFS-3265</a>.
     Major bug reported by kumarr and fixed by kumarr (build)<br>
     <b>PowerPc Build error.</b><br>
     <blockquote>When attempting to build branch-1, the following error is seen and ant exits.<br>[exec] configure: error: Unsupported CPU architecture &quot;powerpc64&quot;<br><br>The following command was used to build hadoop-common<br><br>ant -Dlibhdfs=true -Dcompile.native=true -Dfusedfs=true -Dcompile.c++=true -Dforrest.home=$FORREST_HOME compile-core-native compile-c++ compile-c++-examples task-controller tar record-parser compile-hdfs-classes package -Djava5.home=/opt/ibm/ibm-java2-ppc64-50/ </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3310">HDFS-3310</a>.
     Major bug reported by cmccabe and fixed by cmccabe <br>
     <b>Make sure that we abort when no edit log directories are left</b><br>
     <blockquote>We should make sure to abort when there are no edit log directories left to write to.  It seems that there is at least one case that is slipping through the cracks right now in branch-1.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3374">HDFS-3374</a>.
     Major bug reported by owen.omalley and fixed by owen.omalley (name-node)<br>
     <b>hdfs&apos; TestDelegationToken fails intermittently with a race condition</b><br>
     <blockquote>The testcase is failing because the MiniDFSCluster is shutdown before the secret manager can change the key, which calls system.exit with no edit streams available.<br><br>{code}<br><br>    [junit] 2012-05-04 15:03:51,521 WARN  common.Storage (FSImage.java:updateRemovedDirs(224)) - Removing storage dir /home/horton/src/hadoop/build/test/data/dfs/name1<br>    [junit] 2012-05-04 15:03:51,522 FATAL namenode.FSNamesystem (FSEditLog.java:fatalExit(388)) - No edit streams are accessible<br>    [junit] java.lang.Exce...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1238">MAPREDUCE-1238</a>.
     Major bug reported by rramya and fixed by tgraves (jobtracker)<br>
     <b>mapred metrics shows negative count of waiting maps and reduces </b><br>
     <blockquote>Negative waiting_maps and waiting_reduces count is observed in the mapred metrics</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3377">MAPREDUCE-3377</a>.
     Major bug reported by jxchen and fixed by jxchen <br>
     <b>Compatibility issue with 0.20.203.</b><br>
     <blockquote>I have an OutputFormat which implements Configurable.  I set new config entries to a job configuration during checkOutputSpec() so that the tasks will get the config entries through the job configuration.  This works fine in 0.20.2, but stopped working starting from 0.20.203.  With 0.20.203, my OutputFormat still has the configuration set, but the copy a task gets does not have the new entries that are set as part of checkOutputSpec().  <br><br>I believe that the problem is with JobClient.  The job...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3857">MAPREDUCE-3857</a>.
     Major bug reported by jeagles and fixed by jeagles (examples)<br>
     <b>Grep example ignores mapred.job.queue.name</b><br>
     <blockquote>Grep example creates two jobs as part of its implementation. The first job correctly uses the configuration settings. The second job ignores configuration settings.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-4003">MAPREDUCE-4003</a>.
     Major bug reported by zaozaowang and fixed by knoguchi (task-controller, tasktracker)<br>
     <b>log.index (No such file or directory) AND Task process exit with nonzero status of 126</b><br>
     <blockquote>hello?I have dwelled on this hadoop(cdhu3) problem for 2 days,I have tried every google method.This is the issue: when ran hadoop example &quot;wordcount&quot; ,the tasktracker&apos;s log in one slave node presented such errors<br><br> 1.WARN org.apache.hadoop.mapred.DefaultTaskController: Task wrapper stderr: bash: /var/tmp/mapred/local/ttprivate/taskTracker/hdfs/jobcache/job_201203131751_0003/attempt_201203131751_0003_m_000006_0/taskjvm.sh: Permission denied<br><br>2.WARN org.apache.hadoop.mapred.TaskRunner: attempt_...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-4012">MAPREDUCE-4012</a>.
     Minor bug reported by knoguchi and fixed by tgraves <br>
     <b>Hadoop Job setup error leaves no useful info to users (when LinuxTaskController is used)</b><br>
     <blockquote>When distributed cache pull fail on the TaskTracker, job webUI only shows <br>{noformat}<br>Job initialization failed (255)<br>{noformat}<br>leaving users confused.  <br><br>On the TaskTracker log, there is a log with useful info <br>{noformat}<br>2012-03-14 21:44:17,083 INFO org.apache.hadoop.mapred.TaskController: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: <br>Permission denied: user=user1, access=READ, inode=&quot;testfile&quot;:user3:users:rw-------<br>...<br>2012-03-14 21...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-4154">MAPREDUCE-4154</a>.
     Major bug reported by thejas and fixed by devaraj <br>
     <b>streaming MR job succeeds even if the streaming command fails</b><br>
     <blockquote>Hadoop 1.0.1 behaves as expected - The task fails for streaming MR job if the streaming command fails. But it succeeds in hadoop 1.0.2 .<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-4207">MAPREDUCE-4207</a>.
     Major bug reported by kihwal and fixed by kihwal (mrv1)<br>
     <b>Remove System.out.println() in FileInputFormat</b><br>
     <blockquote>MAPREDUCE-3607 accidentally left the println statement. </blockquote></li>


</ul>


<h2>Changes since Hadoop 1.0.1</h2>

<h3>Jiras with Release Notes (describe major or incompatible changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-1722">HADOOP-1722</a>.
     Major improvement reported by runping and fixed by klbostee <br>
     <b>Make streaming to handle non-utf8 byte array</b><br>
     <blockquote>                                              Streaming allows binary (or other non-UTF8) streams.

      
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3851">MAPREDUCE-3851</a>.
     Major bug reported by kihwal and fixed by tgraves (tasktracker)<br>
     <b>Allow more aggressive action on detection of the jetty issue</b><br>
     <blockquote>                    added new configuration variables to control when TT aborts if it sees a certain number of exceptions:<br/>

<br/>

&nbsp;&nbsp;&nbsp;&nbsp;// Percent of shuffle exceptions (out of sample size) seen before it&#39;s<br/>

&nbsp;&nbsp;&nbsp;&nbsp;// fatal - acceptable values are from 0 to 1.0, 0 disables the check.<br/>

&nbsp;&nbsp;&nbsp;&nbsp;// ie. 0.3 = 30% of the last X number of requests matched the exception,<br/>

&nbsp;&nbsp;&nbsp;&nbsp;// so abort.<br/>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conf.getFloat(<br/>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mapreduce.reduce.shuffle.catch.exception.percent.limit.fatal&quot;, 0);<br/>

<br/>

&nbsp;&nbsp;&nbsp;&nbsp;// The number of trailing requests we track, used for the fatal<br/>

&nbsp;&nbsp;&nbsp;&nbsp;// limit calculation<br/>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conf.getInt(&quot;mapreduce.reduce.shuffle.catch.exception.sample.size&quot;, 1000);
</blockquote></li>

</ul>

<h3>Other Jiras (describe bug fixes and minor changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5450">HADOOP-5450</a>.
     Blocker improvement reported by klbostee and fixed by klbostee <br>
     <b>Add support for application-specific typecodes to typed bytes</b><br>
     <blockquote>For serializing objects of types that are not supported by typed bytes serialization, applications might want to use a custom serialization format. Right now, typecode 0 has to be used for the bytes resulting from this custom serialization, which could lead to problems when deserializing the objects because the application cannot know if a byte sequence following typecode 0 is a customly serialized object or just a raw sequence of bytes. Therefore, a range of typecodes that are treated as ali...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7206">HADOOP-7206</a>.
     Major new feature reported by eli and fixed by tucu00 <br>
     <b>Integrate Snappy compression</b><br>
     <blockquote>Google release Zippy as an open source (APLv2) project called Snappy (http://code.google.com/p/snappy). This tracks integrating it into Hadoop.<br><br>{quote}<br>Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8050">HADOOP-8050</a>.
     Major bug reported by kihwal and fixed by kihwal (metrics)<br>
     <b>Deadlock in metrics</b><br>
     <blockquote>The metrics serving thread and the periodic snapshot thread can deadlock.<br>It happened a few times on one of namenodes we have. When it happens RPC works but the web ui and hftp stop working. I haven&apos;t look at the trunk too closely, but it might happen there too.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8088">HADOOP-8088</a>.
     Major bug reported by kihwal and fixed by  (security)<br>
     <b>User-group mapping cache incorrectly does negative caching on transient failures</b><br>
     <blockquote>We&apos;ve seen a case where some getGroups() calls fail when the ldap server or the network is having transient failures. Looking at the code, the shell-based and the JNI-based implementations swallow exceptions and return an empty or partial list. The caller, Groups#getGroups() adds this likely empty list into the mapping cache for the user. This will function as negative caching until the cache expires. I don&apos;t think we want negative caching here, but even if we do, it should be intelligent eno...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8090">HADOOP-8090</a>.
     Major improvement reported by gkesavan and fixed by gkesavan <br>
     <b>rename hadoop 64 bit rpm/deb package name</b><br>
     <blockquote>change hadoop rpm/deb name from hadoop-&lt;version&gt;.amd64.rpm/deb hadoop-&lt;version&gt;.x86_64.rpm/deb   </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8132">HADOOP-8132</a>.
     Major bug reported by arpitgupta and fixed by arpitgupta <br>
     <b>64bit secure datanodes do not start as the jsvc path is wrong</b><br>
     <blockquote>64bit secure datanodes were looking for /usr/libexec/../libexec/jsvc. instead of /usr/libexec/../libexec/jsvc.amd64</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8201">HADOOP-8201</a>.
     Blocker bug reported by gkesavan and fixed by gkesavan <br>
     <b>create the configure script for native compilation as part of the build</b><br>
     <blockquote>configure script is checked into svn and its not regenerated during build. Ideally configure scritp should not be checked into svn and instead should be generated during build using autoreconf.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2701">HDFS-2701</a>.
     Major improvement reported by eli and fixed by eli (name-node)<br>
     <b>Cleanup FS* processIOError methods</b><br>
     <blockquote>Let&apos;s rename the various &quot;processIOError&quot; methods to be more descriptive. The current code makes it difficult to identify and reason about bug fixes. While we&apos;re at it let&apos;s remove &quot;Fatal&quot; from the &quot;Unable to sync the edit log&quot; log since it&apos;s not actually a fatal error (this is confusing to users). And 2NN &quot;Checkpoint done&quot; should be info, not a warning (also confusing to users).<br><br>Thanks to HDFS-1073 these issues don&apos;t exist on trunk or 23.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2702">HDFS-2702</a>.
     Critical bug reported by eli and fixed by eli (name-node)<br>
     <b>A single failed name dir can cause the NN to exit </b><br>
     <blockquote>There&apos;s a bug in FSEditLog#rollEditLog which results in the NN process exiting if a single name dir has failed. Here&apos;s the relevant code:<br><br>{code}<br>close()  // So editStreams.size() is 0 <br>foreach edits dir {<br>  ..<br>  eStream = new ...  // Might get an IOE here<br>  editStreams.add(eStream);<br>} catch (IOException ioe) {<br>  removeEditsForStorageDir(sd);  // exits if editStreams.size() &lt;= 1  <br>}<br>{code}<br><br>If we get an IOException before we&apos;ve added two edits streams to the list we&apos;ll exit, eg if there&apos;s an ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2703">HDFS-2703</a>.
     Major bug reported by eli and fixed by eli (name-node)<br>
     <b>removedStorageDirs is not updated everywhere we remove a storage dir</b><br>
     <blockquote>There are a number of places (FSEditLog#open, purgeEditLog, and rollEditLog) where we remove a storage directory but don&apos;t add it to the removedStorageDirs list. This means a storage dir may have been removed but we don&apos;t see it in the log or Web UI. This doesn&apos;t affect trunk/23 since the code there is totally different.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2978">HDFS-2978</a>.
     Major new feature reported by atm and fixed by atm (name-node)<br>
     <b>The NameNode should expose name dir statuses via JMX</b><br>
     <blockquote>We currently display this info on the NN web UI, so users who wish to monitor this must either do it manually or parse HTML. We should publish this information via JMX.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3006">HDFS-3006</a>.
     Major bug reported by bcwalrus and fixed by szetszwo (name-node)<br>
     <b>Webhdfs &quot;SETOWNER&quot; call returns incorrect content-type</b><br>
     <blockquote>The SETOWNER call returns an empty body. But the header has &quot;Content-Type: application/json&quot;, which is a contradiction (empty string is not valid json). This appears to happen for SETTIMES and SETPERMISSION as well.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3075">HDFS-3075</a>.
     Major improvement reported by brandonli and fixed by brandonli (name-node)<br>
     <b>Backport HADOOP-4885 to branch-1</b><br>
     <blockquote>When a storage directory is inaccessible, namenode removes it from the valid storage dir list to a removedStorageDirs list. Those storage directories will not be restored when they become healthy again. <br><br>The proposed solution is to restore the previous failed directories at the beginning of checkpointing, say, rollEdits, by copying necessary metadata files from healthy directory to unhealthy ones. In this way, whenever a failed storage directory is recovered by the administrator, he/she can ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-3101">HDFS-3101</a>.
     Major bug reported by wangzw and fixed by szetszwo (hdfs client)<br>
     <b>cannot read empty file using webhdfs</b><br>
     <blockquote>STEP:<br>1, create a new EMPTY file<br>2, read it using webhdfs.<br><br>RESULT:<br>expected: get a empty file<br>I got: {&quot;RemoteException&quot;:{&quot;exception&quot;:&quot;IOException&quot;,&quot;javaClassName&quot;:&quot;java.io.IOException&quot;,&quot;message&quot;:&quot;Offset=0 out of the range [0, 0); OPEN, path=/testFile&quot;}}<br><br>First of all, [0, 0) is not a valid range, and I think read a empty file should be OK.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-764">MAPREDUCE-764</a>.
     Blocker bug reported by klbostee and fixed by klbostee (contrib/streaming)<br>
     <b>TypedBytesInput&apos;s readRaw() does not preserve custom type codes</b><br>
     <blockquote>The typed bytes format supports byte sequences of the form {{&lt;custom type code&gt; &lt;length&gt; &lt;bytes&gt;}}. When reading such a sequence via {{TypedBytesInput}}&apos;s {{readRaw()}} method, however, the returned sequence currently is {{0 &lt;length&gt; &lt;bytes&gt;}} (0 is the type code for a bytes array), which leads to bugs such as the one described [here|http://dumbo.assembla.com/spaces/dumbo/tickets/54].</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3583">MAPREDUCE-3583</a>.
     Critical bug reported by zhihyu@ebaysf.com and fixed by zhihyu@ebaysf.com <br>
     <b>ProcfsBasedProcessTree#constructProcessInfo() may throw NumberFormatException</b><br>
     <blockquote>HBase PreCommit builds frequently gave us NumberFormatException.<br><br>From https://builds.apache.org/job/PreCommit-HBASE-Build/553//testReport/org.apache.hadoop.hbase.mapreduce/TestHFileOutputFormat/testMRIncrementalLoad/:<br>{code}<br>2011-12-20 01:44:01,180 WARN  [main] mapred.JobClient(784): No job jar file set.  User classes may not be found. See JobConf(Class) or JobConf#setJar(String).<br>java.lang.NumberFormatException: For input string: &quot;18446743988060683582&quot;<br>	at java.lang.NumberFormatException.fo...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3773">MAPREDUCE-3773</a>.
     Major new feature reported by owen.omalley and fixed by owen.omalley (jobtracker)<br>
     <b>Add queue metrics with buckets for job run times</b><br>
     <blockquote>It would be nice to have queue metrics that reflect the number of jobs in each queue that have been running for different ranges of time.<br><br>Reasonable time ranges are probably 0-1 hr, 1-5 hr, 5-24 hr, 24+ hrs; but they should be configurable.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3824">MAPREDUCE-3824</a>.
     Critical bug reported by aw and fixed by tgraves (distributed-cache)<br>
     <b>Distributed caches are not removed properly</b><br>
     <blockquote>Distributed caches are not being properly removed by the TaskTracker when they are expected to be expired. </blockquote></li>

</ul>

<h2>Changes since Hadoop 1.0.0</h2>

<h3>Jiras with Release Notes (describe major or incompatible changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8009">HADOOP-8009</a>.
     Critical improvement reported by tucu00 and fixed by tucu00 (build)<br>
     <b>Create hadoop-client and hadoop-minicluster artifacts for downstream projects </b><br>
     <blockquote>                    Generate integration artifacts &quot;org.apache.hadoop:hadoop-client&quot; and &quot;org.apache.hadoop:hadoop-minicluster&quot; containing all the jars needed to use Hadoop client APIs, and to run Hadoop MiniClusters, respectively.  Push these artifacts to the maven repository when mvn-deploy, along with existing artifacts. 
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8037">HADOOP-8037</a>.
     Blocker bug reported by mattf and fixed by gkesavan (build)<br>
     <b>Binary tarball does not preserve platform info for native builds, and RPMs fail to provide needed symlinks for libhadoop.so</b><br>
     <blockquote>                    This fix is marked &quot;incompatible&quot; only because it changes the bin-tarball directory structure to be consistent with the source tarball directory structure. The source tarball is unchanged. RPMs and DEBs now use an intermediate bin-tarball with an &quot;${os.arch}&quot; tag (like the packages themselves). The un-tagged bin-tarball is now multi-platform and retains the structure of the source tarball; it is in fact generated by target &quot;tar&quot;, not by target &quot;binary&quot;. Finally, in the 64-bit RPMs and DEBs, the native libs go in the &quot;lib64&quot; directory instead of &quot;lib&quot;.
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3184">MAPREDUCE-3184</a>.
     Major improvement reported by tlipcon and fixed by tlipcon (jobtracker)<br>
     <b>Improve handling of fetch failures when a tasktracker is not responding on HTTP</b><br>
     <blockquote>                    The TaskTracker now has a thread which monitors for a known Jetty bug in which the selector thread starts spinning and map output can no longer be served. If the bug is detected, the TaskTracker will shut itself down. This feature can be disabled by setting mapred.tasktracker.jetty.cpu.check.enabled to false.
</blockquote></li>

</ul>

<h3>Other Jiras (describe bug fixes and minor changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7470">HADOOP-7470</a>.
     Minor improvement reported by stevel@apache.org and fixed by enis (util)<br>
     <b>move up to Jackson 1.8.8</b><br>
     <blockquote>I see that hadoop-core still depends on Jackson 1.0.1 -but that project is now up to 1.8.2 in releases. Upgrading will make it easier for other Jackson-using apps that are more up to date to keep their classpath consistent.<br><br>The patch would be updating the ivy file to pull in the later version; no test</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7960">HADOOP-7960</a>.
     Major bug reported by gkesavan and fixed by mattf <br>
     <b>Port HADOOP-5203 to branch-1, build version comparison is too restrictive</b><br>
     <blockquote>hadoop services should not be using the build timestamp to verify version difference in the cluster installation. Instead it should use the source checksum as in HADOOP-5203.<br>  </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7964">HADOOP-7964</a>.
     Blocker bug reported by kihwal and fixed by daryn (security, util)<br>
     <b>Deadlock in class init.</b><br>
     <blockquote>After HADOOP-7808, client-side commands hang occasionally. There are cyclic dependencies in NetUtils and SecurityUtil class initialization. Upon initial look at the stack trace, two threads deadlock when they hit the either of class init the same time.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7987">HADOOP-7987</a>.
     Major improvement reported by devaraj and fixed by jnp (security)<br>
     <b>Support setting the run-as user in unsecure mode</b><br>
     <blockquote>Some applications need to be able to perform actions (such as launch MR jobs) from map or reduce tasks. In earlier unsecure versions of hadoop (20.x), it was possible to do this by setting user.name in the configuration. But in 20.205 and 1.0, when running in unsecure mode, this does not work. (In secure mode, you can do this using the kerberos credentials).</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7988">HADOOP-7988</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>Upper case in hostname part of the principals doesn&apos;t work with kerberos.</b><br>
     <blockquote>Kerberos doesn&apos;t like upper case in the hostname part of the principals.<br>This issue has been seen in 23 as well as 1.0.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8010">HADOOP-8010</a>.
     Minor bug reported by rvs and fixed by rvs (scripts)<br>
     <b>hadoop-config.sh spews error message when HADOOP_HOME_WARN_SUPPRESS is set to true and HADOOP_HOME is present</b><br>
     <blockquote>Running hadoop daemon commands when HADOOP_HOME_WARN_SUPPRESS is set to true and HADOOP_HOME is present produces:<br>{noformat}<br>  [: 76: true: unexpected operator<br>{noformat}</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-8052">HADOOP-8052</a>.
     Major bug reported by reznor and fixed by reznor (metrics)<br>
     <b>Hadoop Metrics2 should emit Float.MAX_VALUE (instead of Double.MAX_VALUE) to avoid making Ganglia&apos;s gmetad core</b><br>
     <blockquote>Ganglia&apos;s gmetad converts the doubles emitted by Hadoop&apos;s Metrics2 system to strings, and the buffer it uses is 256 bytes wide.<br><br>When the SampleStat.MinMax class (in org.apache.hadoop.metrics2.util) emits its default min value (currently initialized to Double.MAX_VALUE), it ends up causing a buffer overflow in gmetad, which causes it to core, effectively rendering Ganglia useless (for some, the core is continuous; for others who are more fortunate, it&apos;s only a one-time Hadoop-startup-time thi...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2379">HDFS-2379</a>.
     Critical bug reported by tlipcon and fixed by tlipcon (data-node)<br>
     <b>0.20: Allow block reports to proceed without holding FSDataset lock</b><br>
     <blockquote>As disks are getting larger and more plentiful, we&apos;re seeing DNs with multiple millions of blocks on a single machine. When page cache space is tight, block reports can take multiple minutes to generate. Currently, during the scanning of the data directories to generate a report, the FSVolumeSet lock is held. This causes writes and reads to block, timeout, etc, causing big problems especially for clients like HBase.<br><br>This JIRA is to explore some of the ideas originally discussed in HADOOP-458...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2814">HDFS-2814</a>.
     Minor improvement reported by hitesh and fixed by hitesh <br>
     <b>NamenodeMXBean does not account for svn revision in the version information</b><br>
     <blockquote>Unlike the jobtracker where both the UI and jmx information report the version as &quot;x.y.z, r&lt;svn revision&quot;, in case of the namenode, the UI displays x.y.z and svn revision info but the jmx output only contains the x.y.z version.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3343">MAPREDUCE-3343</a>.
     Major bug reported by ahmed.radwan and fixed by zhaoyunjiong (mrv1)<br>
     <b>TaskTracker Out of Memory because of distributed cache</b><br>
     <blockquote>This Out of Memory happens when you run large number of jobs (using the distributed cache) on a TaskTracker. <br><br>Seems the basic issue is with the distributedCacheManager (instance of TrackerDistributedCacheManager in TaskTracker.java), this gets created during TaskTracker.initialize(), and it keeps references to TaskDistributedCacheManager for every submitted job via the jobArchives Map, also references to CacheStatus via cachedArchives map. I am not seeing these cleaned up between jobs, so th...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3607">MAPREDUCE-3607</a>.
     Major improvement reported by tomwhite and fixed by tomwhite (client)<br>
     <b>Port missing new API mapreduce lib classes to 1.x</b><br>
     <blockquote>There are a number of classes under mapreduce.lib that are not present in the 1.x series. Including these would help users and downstream projects using the new MapReduce API migrate to later versions of Hadoop in the future.<br><br>A few examples of where this would help:<br>* Sqoop uses mapreduce.lib.db.DBWritable and mapreduce.lib.input.CombineFileInputFormat (SQOOP-384).<br>* Mahout uses mapreduce.lib.output.MultipleOutputs (MAHOUT-822).<br>* HBase has a backport of mapreduce.lib.partition.InputSampler ...</blockquote></li>


</ul>


<h2>Changes since Hadoop 0.20.205.0</h2>

<h3>Jiras with Release Notes (describe major or incompatible changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7728">HADOOP-7728</a>.
     Major bug reported by rramya and fixed by rramya (conf)<br>
     <b>hadoop-setup-conf.sh should be modified to enable task memory manager</b><br>
     <blockquote>                                              Enable task memory management to be configurable via hadoop config setup script.

      
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7740">HADOOP-7740</a>.
     Minor bug reported by arpitgupta and fixed by arpitgupta (conf)<br>
     <b>security audit logger is not on by default, fix the log4j properties to enable the logger</b><br>
     <blockquote>                                              Fixed security audit logger configuration. (Arpit Gupta via Eric Yang)

      
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7923">HADOOP-7923</a>.
     Major task reported by szetszwo and fixed by szetszwo (build, documentation)<br>
     <b>Update doc versions from 0.20 to 1.0</b><br>
     <blockquote>                                              Docs version number is now automatically updated by reference to the build number.
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-617">HDFS-617</a>.
     Major improvement reported by kzhang and fixed by kzhang (hdfs client, name-node)<br>
     <b>Support for non-recursive create() in HDFS</b><br>
     <blockquote>                                              New DFSClient.create(...) allows option of not creating missing parent(s).

      
</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2246">HDFS-2246</a>.
     Major improvement reported by sanjay.radia and fixed by jnp <br>
     <b>Shortcut a local client reads to a Datanodes files directly</b><br>
     <blockquote>                    1. New configurations<br/>

a. dfs.block.local-path-access.user is the key in datanode configuration to specify the user allowed to do short circuit read.<br/>

b. dfs.client.read.shortcircuit is the key to enable short circuit read at the client side configuration.<br/>

c. dfs.client.read.shortcircuit.skip.checksum is the key to bypass checksum check at the client side.<br/>

2. By default none of the above are enabled and short circuit read will not kick in.<br/>

3. If security is on, the feature can be used only for user that has kerberos credentials at the client, therefore map reduce tasks cannot benefit from it in general.<br/>


</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2316">HDFS-2316</a>.
     Major new feature reported by szetszwo and fixed by szetszwo <br>
     <b>[umbrella] webhdfs: a complete FileSystem implementation for accessing HDFS over HTTP</b><br>
     <blockquote>                    Provide webhdfs as a complete FileSystem implementation for accessing HDFS over HTTP.<br/>

Previous hftp feature was a read-only FileSystem and does not provide &quot;write&quot; accesses.
</blockquote></li>

</ul>


<h3>Other Jiras (describe bug fixes and minor changes)</h3>
<ul>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5124">HADOOP-5124</a>.
     Major improvement reported by hairong and fixed by hairong <br>
     <b>A few optimizations to FsNamesystem#RecentInvalidateSets</b><br>
     <blockquote>This jira proposes a few optimization to FsNamesystem#RecentInvalidateSets:<br>1. when removing all replicas of a block, it does not traverse all nodes in the map. Instead it traverse only the nodes that the block is located.<br>2. When dispatching blocks to datanodes in ReplicationMonitor. It randomly chooses a predefined number of datanodes and dispatches blocks to those datanodes. This strategy provides fairness to all datanodes. The current strategy always starts from the first datanode.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6840">HADOOP-6840</a>.
     Minor improvement reported by nspiegelberg and fixed by jnp (fs, io)<br>
     <b>Support non-recursive create() in FileSystem &amp; SequenceFile.Writer</b><br>
     <blockquote>The proposed solution for HBASE-2312 requires the sequence file to handle a non-recursive create.  This is already supported by HDFS, but needs to have an equivalent FileSystem &amp; SequenceFile.Writer API.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6886">HADOOP-6886</a>.
     Minor improvement reported by nspiegelberg and fixed by  (fs)<br>
     <b>LocalFileSystem Needs createNonRecursive API</b><br>
     <blockquote>While running sanity check tests for HBASE-2312, I noticed that HDFS-617 did not include createNonRecursive() support for the LocalFileSystem.  This is a problem for HBase, which allows the user to run over the LocalFS instead of HDFS for local cluster testing.  I think this only affects 0.20-append, but may affect the trunk based upon how exactly FileContext handles non-recursive creates.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7461">HADOOP-7461</a>.
     Major bug reported by rbodkin and fixed by gkesavan (build)<br>
     <b>Jackson Dependency Not Declared in Hadoop POM</b><br>
     <blockquote>(COMMENT: This bug still affects 0.20.205.0, four months after the bug was filed.  This causes total failure, and the fix is trivial for whoever manages the POM -- just add the missing dependency! --ben)<br><br>This issue was identified and the fix &amp; workaround was documented at <br><br>https://issues.cloudera.org/browse/DISTRO-44<br><br>The issue affects use of Hadoop 0.20.203.0 from the Maven central repo. I built a job using that maven repo and ran it, resulting in this failure:<br><br>Exception in thread &quot;main&quot; ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7664">HADOOP-7664</a>.
     Minor improvement reported by raviprak and fixed by raviprak (conf)<br>
     <b>o.a.h.conf.Configuration complains of overriding final parameter even if the value with which its attempting to override is the same. </b><br>
     <blockquote>o.a.h.conf.Configuration complains of overriding final parameter even if the value with which its attempting to override is the same. </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7765">HADOOP-7765</a>.
     Major bug reported by eyang and fixed by eyang (build)<br>
     <b>Debian package contain both system and tar ball layout</b><br>
     <blockquote>When packaging is invoked as &quot;ant clean tar deb&quot;.  The system creates both system layout and tarball layout in the same build directory.  Debian packaging target would pick up files for both layouts.  The end result of using produced debian package built this way, would end up README.txt LICENSE.txt, and jar files in /usr.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7784">HADOOP-7784</a>.
     Major bug reported by arpitgupta and fixed by eyang <br>
     <b>secure datanodes fail to come up stating jsvc not found </b><br>
     <blockquote>building 205.1 and trying to startup a secure dn leads to the following<br><br>/usr/libexec/../bin/hadoop: line 386: /usr/libexec/../libexec/jsvc.amd64: No such file or directory<br>/usr/libexec/../bin/hadoop: line 386: exec: /usr/libexec/../libexec/jsvc.amd64: cannot execute: No such file or directory</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7804">HADOOP-7804</a>.
     Major improvement reported by arpitgupta and fixed by arpitgupta (conf)<br>
     <b>enable hadoop config generator to set dfs.block.local-path-access.user to enable short circuit read</b><br>
     <blockquote>we have a new config that allows to select which user can have access for short circuit read. We should make that configurable through the config generator scripts.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7815">HADOOP-7815</a>.
     Minor bug reported by rramya and fixed by rramya (conf)<br>
     <b>Map memory mb is being incorrectly set by hadoop-setup-conf.sh</b><br>
     <blockquote>HADOOP-7728 enabled task memory management to be configurable in the hadoop-setup-conf.sh. However, the default value for mapred.job.map.memory.mb is being set incorrectly.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7816">HADOOP-7816</a>.
     Major bug reported by davet and fixed by davet <br>
     <b>Allow HADOOP_HOME deprecated warning suppression based on config specified in hadoop-env.sh</b><br>
     <blockquote>Move suppression check for &quot;Warning: $HADOOP_HOME is deprecated&quot;  to after sourcing of hadoop-env.sh so that people can set HADOOP_HOME_WARN_SUPPRESS inside the config.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7853">HADOOP-7853</a>.
     Blocker bug reported by daryn and fixed by daryn (security)<br>
     <b>multiple javax security configurations cause conflicts</b><br>
     <blockquote>Both UGI and the SPNEGO KerberosAuthenticator set the global javax security configuration.  SPNEGO stomps on UGI&apos;s security config which leads to kerberos/SASL authentication errors.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7854">HADOOP-7854</a>.
     Critical bug reported by daryn and fixed by daryn (security)<br>
     <b>UGI getCurrentUser is not synchronized</b><br>
     <blockquote>Sporadic {{ConcurrentModificationExceptions}} are originating from {{UGI.getCurrentUser}} when it needs to create a new instance.  The problem was specifically observed in a JT under heavy load when a post-job cleanup is accessing the UGI while a new job is being processed.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7865">HADOOP-7865</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>Test Failures in 1.0.0 hdfs/common</b><br>
     <blockquote>Following tests in hdfs and common are failing<br>1. TestFileAppend2<br>2. TestFileConcurrentReader<br>3. TestDoAsEffectiveUser </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7869">HADOOP-7869</a>.
     Critical bug reported by owen.omalley and fixed by owen.omalley (scripts)<br>
     <b>HADOOP_HOME warning happens all of the time</b><br>
     <blockquote>With HADOOP-7816, the check for HADOOP_HOME has moved after it is set by hadoop-config so that it always happens unless HADOOP_HOME_WARN_SUPPRESS is set in hadoop-env or the environment.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-611">HDFS-611</a>.
     Major bug reported by dhruba and fixed by zshao (data-node)<br>
     <b>Heartbeats times from Datanodes increase when there are plenty of blocks to delete</b><br>
     <blockquote>I am seeing that when we delete a large directory that has plenty of blocks, the heartbeat times from datanodes increase significantly from the normal value of 3 seconds to as large as 50 seconds or so. The heartbeat thread in the Datanode deletes a bunch of blocks sequentially, this causes the heartbeat times to increase.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1257">HDFS-1257</a>.
     Major bug reported by rvadali and fixed by eepayne (name-node)<br>
     <b>Race condition on FSNamesystem#recentInvalidateSets introduced by HADOOP-5124</b><br>
     <blockquote>HADOOP-5124 provided some improvements to FSNamesystem#recentInvalidateSets. But it introduced unprotected access to the data structure recentInvalidateSets. Specifically, FSNamesystem.computeInvalidateWork accesses recentInvalidateSets without read-lock protection. If there is concurrent activity (like reducing replication on a file) that adds to recentInvalidateSets, the name-node crashes with a ConcurrentModificationException.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1943">HDFS-1943</a>.
     Blocker bug reported by weiyj and fixed by mattf (scripts)<br>
     <b>fail to start datanode while start-dfs.sh is executed by root user</b><br>
     <blockquote>When start-dfs.sh is run by root user, we got the following error message:<br># start-dfs.sh<br>Starting namenodes on [localhost ]<br>localhost: namenode running as process 2556. Stop it first.<br>localhost: starting datanode, logging to /usr/hadoop/hadoop-common-0.23.0-SNAPSHOT/bin/../logs/hadoop-root-datanode-cspf01.out<br>localhost: Unrecognized option: -jvm<br>localhost: Could not create the Java virtual machine.<br><br>The -jvm options should be passed to jsvc when we starting a secure<br>datanode, but it still pa...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2065">HDFS-2065</a>.
     Major bug reported by bharathm and fixed by umamaheswararao <br>
     <b>Fix NPE in DFSClient.getFileChecksum</b><br>
     <blockquote>The following code can throw NPE if callGetBlockLocations returns null.<br><br>If server returns null <br><br>{code}<br>    List&lt;LocatedBlock&gt; locatedblocks<br>        = callGetBlockLocations(namenode, src, 0, Long.MAX_VALUE).getLocatedBlocks();<br>{code}<br><br>The right fix for this is server should throw right exception.<br><br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2346">HDFS-2346</a>.
     Blocker bug reported by umamaheswararao and fixed by lakshman (test)<br>
     <b>TestHost2NodesMap &amp; TestReplicasMap will fail depending upon execution order of test methods</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2416">HDFS-2416</a>.
     Major sub-task reported by arpitgupta and fixed by jnp <br>
     <b>distcp with a webhdfs uri on a secure cluster fails</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2424">HDFS-2424</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs liststatus json does not convert to a valid xml document</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2427">HDFS-2427</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs mkdirs api call creates path with 777 permission, we should default it to 755</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2428">HDFS-2428</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs api parameter validation should be better</b><br>
     <blockquote>PUT Request: http://localhost:50070/webhdfs/some_path?op=MKDIRS&amp;permission=955<br><br>Exception returned<br><br><br>HTTP/1.1 500 Internal Server Error<br>{&quot;RemoteException&quot;:{&quot;className&quot;:&quot;com.sun.jersey.api.ParamException$QueryParamException&quot;,&quot;message&quot;:&quot;java.lang.NumberFormatException: For input string: \&quot;955\&quot;&quot;}} <br><br><br>We should return a 400 with appropriate error message</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2432">HDFS-2432</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs setreplication api should return a 403 when called on a directory</b><br>
     <blockquote>Currently the set replication api on a directory leads to a 200.<br><br>Request URI http://NN:50070/webhdfs/tmp/webhdfs_data/dir_replication_tests?op=SETREPLICATION&amp;replication=5<br>Request Method: PUT<br>Status Line: HTTP/1.1 200 OK<br>Response Content: {&quot;boolean&quot;:false}<br><br>Since we can determine that this call did not succeed (boolean=false) we should rather just return a 403</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2439">HDFS-2439</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs open an invalid path leads to a 500 which states a npe, we should return a 404 with appropriate error message</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2441">HDFS-2441</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs returns two content-type headers</b><br>
     <blockquote>$ curl -i &quot;http://localhost:50070/webhdfs/path?op=GETFILESTATUS&quot;<br>HTTP/1.1 200 OK<br>Content-Type: text/html; charset=utf-8<br>Expires: Thu, 01-Jan-1970 00:00:00 GMT<br>........<br>Content-Type: application/json<br>Transfer-Encoding: chunked<br>Server: Jetty(6.1.26)<br><br><br>It should only return one content type header = application/json</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2450">HDFS-2450</a>.
     Major bug reported by rajsaha and fixed by daryn <br>
     <b>Only complete hostname is supported to access data via hdfs://</b><br>
     <blockquote>If my complete hostname is  host1.abc.xyz.com, only complete hostname must be used to access data via hdfs://<br><br>I am running following in .20.205 Client to get data from .20.205 NN (host1)<br>$hadoop dfs -copyFromLocal /etc/passwd  hdfs://host1/tmp<br>copyFromLocal: Wrong FS: hdfs://host1/tmp, expected: hdfs://host1.abc.xyz.com<br>Usage: java FsShell [-copyFromLocal &lt;localsrc&gt; ... &lt;dst&gt;]<br><br>$hadoop dfs -copyFromLocal /etc/passwd  hdfs://host1.abc/tmp/<br>copyFromLocal: Wrong FS: hdfs://host1.blue/tmp/1, exp...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2453">HDFS-2453</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>tail using a webhdfs uri throws an error</b><br>
     <blockquote>/usr//bin/hadoop --config /etc/hadoop dfs -tail webhdfs://NN:50070/file <br>tail: HTTP_PARTIAL expected, received 200<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2494">HDFS-2494</a>.
     Major sub-task reported by umamaheswararao and fixed by umamaheswararao (data-node)<br>
     <b>[webhdfs] When Getting the file using OP=OPEN with DN http address, ESTABLISHED sockets are growing.</b><br>
     <blockquote>As part of the reliable test,<br>Scenario:<br>Initially check the socket count. ---there are aroud 42 sockets are there.<br>open the file with DataNode http address using op=OPEN request parameter about 500 times in loop.<br>Wait for some time and check the socket count. --- There are thousands of ESTABLISHED sockets are growing. ~2052<br><br>Here is the netstat result:<br><br>C:\Users\uma&gt;netstat | grep 127.0.0.1 | grep ESTABLISHED |wc -l<br>2042<br>C:\Users\uma&gt;netstat | grep 127.0.0.1 | grep ESTABLISHED |wc -l<br>2042<br>C:\...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2501">HDFS-2501</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>add version prefix and root methods to webhdfs</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2527">HDFS-2527</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Remove the use of Range header from webhdfs</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2528">HDFS-2528</a>.
     Major sub-task reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs rest call to a secure dn fails when a token is sent</b><br>
     <blockquote>curl -L -u : --negotiate -i &quot;http://NN:50070/webhdfs/v1/tmp/webhdfs_data/file_small_data.txt?op=OPEN&quot;<br><br>the following exception is thrown by the datanode when the redirect happens.<br>{&quot;RemoteException&quot;:{&quot;exception&quot;:&quot;IOException&quot;,&quot;javaClassName&quot;:&quot;java.io.IOException&quot;,&quot;message&quot;:&quot;Call to  failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]&quot;}}<br>...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2539">HDFS-2539</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Support doAs and GETHOMEDIRECTORY in webhdfs</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2540">HDFS-2540</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Change WebHdfsFileSystem to two-step create/append</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2552">HDFS-2552</a>.
     Major task reported by szetszwo and fixed by szetszwo (documentation)<br>
     <b>Add WebHdfs Forrest doc</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2589">HDFS-2589</a>.
     Major bug reported by daryn and fixed by daryn (security)<br>
     <b>unnecessary hftp token fetch and renewal thread</b><br>
     <blockquote>Instantiation of the hftp filesystem is causing a token to be implicitly created and added to a custom token renewal thread.  With the new token renewal feature in the JT, this causes the mapreduce {{obtainTokensForNamenodes}} to fetch two tokens (an implicit and uncancelled token, and an explicit token) and leave a spurious renewal thread running.  This thread should not be running in the JT.<br><br>After speaking with Owen, the quick solution is to lazy fetch the token, and to lazy start the rene...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2590">HDFS-2590</a>.
     Major bug reported by szetszwo and fixed by szetszwo (documentation)<br>
     <b>Some links in WebHDFS forrest doc do not work</b><br>
     <blockquote>Some links are pointing to DistributedFileSystem javadoc but the javadoc of DistributedFileSystem is not generated by default.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2604">HDFS-2604</a>.
     Minor improvement reported by szetszwo and fixed by szetszwo (data-node, documentation, name-node)<br>
     <b>Add a log message to show if WebHDFS is enabled</b><br>
     <blockquote>WebHDFS can be enabled/disabled by the conf key {{dfs.webhdfs.enabled}}.  Let&apos;s add a log message to show if it is enabled.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2673">HDFS-2673</a>.
     Trivial bug reported by umamaheswararao and fixed by umamaheswararao (name-node)<br>
     <b>While Namenode processing the blocksBeingWrittenReport, it will log incorrect number blocks count</b><br>
     <blockquote>In NameNode#blocksBeingWrittenReport<br> we have the following stateChangeLog<br>{code}<br>stateChangeLog.info(&quot;*BLOCK* NameNode.blocksBeingWrittenReport: &quot;<br>           +&quot;from &quot;+nodeReg.getName()+&quot; &quot;+blocks.length +&quot; blocks&quot;);<br>{code}<br><br>here blocks is long array. Every consecutive 3 elements represents a block ( length, blockid, genstamp).<br><br>So, here in log message, blocks.length should be blocks.length/3.<br><br> </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3169">MAPREDUCE-3169</a>.
     Major improvement reported by tlipcon and fixed by ahmed.radwan (mrv1, mrv2, test)<br>
     <b>Create a new MiniMRCluster equivalent which only provides client APIs cross MR1 and MR2</b><br>
     <blockquote>Many dependent projects like HBase, Hive, Pig, etc, depend on MiniMRCluster for writing tests. Many users do as well. MiniMRCluster, however, exposes MR implementation details like the existence of TaskTrackers, JobTrackers, etc, since it was used by MR1 for testing the server implementations as well.<br><br>This JIRA is to create a new interface which could be implemented either by MR1 or MR2 that exposes only the client-side portions of the MR framework. Ideally it would be &quot;recompile-compatible&quot;...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3319">MAPREDUCE-3319</a>.
     Blocker bug reported by rvs and fixed by subrotosanyal (examples)<br>
     <b>multifilewc from hadoop examples seems to be broken in 0.20.205.0</b><br>
     <blockquote>{noformat}<br>/usr/lib/hadoop/bin/hadoop jar /usr/lib/hadoop/hadoop-examples-0.20.205.0.22.jar multifilewc  examples/text examples-output/multifilewc<br>11/10/31 16:50:26 INFO mapred.FileInputFormat: Total input paths to process : 2<br>11/10/31 16:50:26 INFO mapred.JobClient: Running job: job_201110311350_0220<br>11/10/31 16:50:27 INFO mapred.JobClient:  map 0% reduce 0%<br>11/10/31 16:50:42 INFO mapred.JobClient: Task Id : attempt_201110311350_0220_m_000000_0, Status : FAILED<br>java.lang.ClassCastException: ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3374">MAPREDUCE-3374</a>.
     Major bug reported by rvs and fixed by  (task-controller)<br>
     <b>src/c++/task-controller/configure is not set executable in the tarball and that prevents task-controller from rebuilding</b><br>
     <blockquote>ant task-controller fails because src/c++/task-controller/configure is not set executable</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3475">MAPREDUCE-3475</a>.
     Major bug reported by daryn and fixed by daryn (jobtracker)<br>
     <b>JT can&apos;t renew its own tokens</b><br>
     <blockquote>When external systems submit jobs whose tasks need to submit additional jobs (such as oozie/pig), they include their own MR token used to submit the job.  The token&apos;s renewer may not allow the JT to renew the token.  The JT log will include very long SASL/GSSAPI exceptions when the job is submitted.  It is also dubious for the JT to renew its token because it renders the expiry as meaningless since the JT will renew its own token until the max lifetime is exceeded.<br><br>After speaking with Owen &amp;...</blockquote></li>


<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3480">MAPREDUCE-3480</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>TestJvmReuse fails in 1.0</b><br>
     <blockquote>TestJvmReuse is failing in apache builds, although it passes in my local machine.</blockquote></li>

</ul>


<h2>Changes since Hadoop 0.20.204.0</h2>

<ul>
<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6722">HADOOP-6722</a>.
     Major bug reported by tlipcon and fixed by tlipcon (util)<br>
     <b>NetUtils.connect should check that it hasn&apos;t connected a socket to itself</b><br>
     <blockquote>I had no idea this was possible, but it turns out that a TCP connection will be established in the rare case that the local side of the socket binds to the ephemeral port that you later try to connect to. This can present itself in very very rare occasion when an RPC client is trying to connect to a daemon running on the same node, but that daemon is down. To see what I&apos;m talking about, run &quot;while true ; do telnet localhost 60020 ; done&quot; on a multicore box and wait several minutes.<br><br>This can ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6833">HADOOP-6833</a>.
     Blocker bug reported by tlipcon and fixed by tlipcon <br>
     <b>IPC leaks call parameters when exceptions thrown</b><br>
     <blockquote>HADOOP-6498 moved the calls.remove() call lower into the SUCCESS clause of receiveResponse(), but didn&apos;t put a similar calls.remove into the ERROR clause. So, any RPC call that throws an exception ends up orphaning the Call object in the connection&apos;s &quot;calls&quot; hashtable. This prevents cleanup of the connection and is a memory leak for the call parameters.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6889">HADOOP-6889</a>.
     Major new feature reported by hairong and fixed by johnvijoe (ipc)<br>
     <b>Make RPC to have an option to timeout</b><br>
     <blockquote>Currently Hadoop RPC does not timeout when the RPC server is alive. What it currently does is that a RPC client sends a ping to the server whenever a socket timeout happens. If the server is still alive, it continues to wait instead of throwing a SocketTimeoutException. This is to avoid a client to retry when a server is busy and thus making the server even busier. This works great if the RPC server is NameNode.<br><br>But Hadoop RPC is also used for some of client to DataNode communications, for e...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7119">HADOOP-7119</a>.
     Major new feature reported by tucu00 and fixed by tucu00 (security)<br>
     <b>add Kerberos HTTP SPNEGO authentication support to Hadoop JT/NN/DN/TT web-consoles</b><br>
     <blockquote>                                              Adding support for Kerberos HTTP SPNEGO authentication to the Hadoop web-consoles<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7314">HADOOP-7314</a>.
     Major improvement reported by naisbitt and fixed by naisbitt <br>
     <b>Add support for throwing UnknownHostException when a host doesn&apos;t resolve</b><br>
     <blockquote>As part of MAPREDUCE-2489, we need support for having the resolve methods (for DNS mapping) throw UnknownHostExceptions.  (Currently, they hide the exception).  Since the existing &apos;resolve&apos; method is ultimately used by several other locations/components, I propose we add a new &apos;resolveValidHosts&apos; method.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7343">HADOOP-7343</a>.
     Minor improvement reported by tgraves and fixed by tgraves (test)<br>
     <b>backport HADOOP-7008 and HADOOP-7042 to branch-0.20-security</b><br>
     <blockquote>backport HADOOP-7008 and HADOOP-7042 to branch-0.20-security so that we can enable test-patch.sh to have a configured number of acceptable findbugs and javadoc warnings</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7400">HADOOP-7400</a>.
     Major bug reported by gkesavan and fixed by gkesavan (build)<br>
     <b>HdfsProxyTests fails when the -Dtest.build.dir and -Dbuild.test is set </b><br>
     <blockquote>HdfsProxyTests fails when the -Dtest.build.dir and -Dbuild.test is set a dir other than build dir<br><br>test-junit:<br>     [copy] Copying 1 file to /home/y/var/builds/thread2/workspace/Cloud-Hadoop-0.20.1xx-Secondary/src/contrib/hdfsproxy/src/test/resources/proxy-config<br>    [junit] Running org.apache.hadoop.hdfsproxy.TestHdfsProxy<br>    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec<br>    [junit] Test org.apache.hadoop.hdfsproxy.TestHdfsProxy FAILED</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7432">HADOOP-7432</a>.
     Major improvement reported by sherri_chen and fixed by sherri_chen <br>
     <b>Back-port HADOOP-7110 to 0.20-security</b><br>
     <blockquote>HADOOP-7110 implemented chmod in the NativeIO library so we can have good performance (ie not fork) and still not be prone to races. This should fix build failures (and probably task failures too).</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7472">HADOOP-7472</a>.
     Minor improvement reported by kihwal and fixed by kihwal (ipc)<br>
     <b>RPC client should deal with the IP address changes</b><br>
     <blockquote>The current RPC client implementation and the client-side callers assume that the hostname-address mappings of servers never change. The resolved address is stored in an immutable InetSocketAddress object above/outside RPC, and the reconnect logic in the RPC Connection implementation also trusts the resolved address that was passed down.<br><br>If the NN suffers a failure that requires migration, it may be started on a different node with a different IP address. In this case, even if the name-addre...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7510">HADOOP-7510</a>.
     Major improvement reported by daryn and fixed by daryn (security)<br>
     <b>Tokens should use original hostname provided instead of ip</b><br>
     <blockquote>Tokens currently store the ip:port of the remote server.  This precludes tokens from being used after a host&apos;s ip is changed.  Tokens should store the hostname used to make the RPC connection.  This will enable new processes to use their existing tokens.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7539">HADOOP-7539</a>.
     Major bug reported by johnvijoe and fixed by johnvijoe <br>
     <b>merge hadoop archive goodness from trunk to .20</b><br>
     <blockquote>hadoop archive in branch-0.20-security is outdated. When run recently, it produced  some bugs which were all fixed in trunk. This JIRA aims to bring in all these JIRAs to branch-0.20-security.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7594">HADOOP-7594</a>.
     Major new feature reported by szetszwo and fixed by szetszwo <br>
     <b>Support HTTP REST in HttpServer</b><br>
     <blockquote>Provide an API in HttpServer for supporting HTTP REST.<br><br>This is a part of HDFS-2284.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7596">HADOOP-7596</a>.
     Major bug reported by eyang and fixed by eyang (build)<br>
     <b>Enable jsvc to work with Hadoop RPM package</b><br>
     <blockquote>For secure Hadoop 0.20.2xx cluster, datanode can only run with 32 bit jvm because Hadoop only packages 32 bit jsvc.  The build process should download proper jsvc versions base on the build architecture.  In addition, the shell script should be enhanced to locate hadoop jar files in the proper location.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7599">HADOOP-7599</a>.
     Major bug reported by eyang and fixed by eyang (scripts)<br>
     <b>Improve hadoop setup conf script to setup secure Hadoop cluster</b><br>
     <blockquote>Setting up a secure Hadoop cluster requires a lot of manual setup.  The motivation of this jira is to provide setup scripts to automate setup secure Hadoop cluster.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7602">HADOOP-7602</a>.
     Major bug reported by johnvijoe and fixed by johnvijoe <br>
     <b>wordcount, sort etc on har files fails with NPE</b><br>
     <blockquote>wordcount, sort etc on har files fails with NPE@createSocketAddr(NetUtils.java:137). </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7603">HADOOP-7603</a>.
     Major bug reported by eyang and fixed by eyang <br>
     <b>Set default hdfs, mapred uid, and hadoop group gid for RPM packages</b><br>
     <blockquote>                                              Set hdfs, mapred uid, and hadoop uid to fixed numbers. (Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7610">HADOOP-7610</a>.
     Major bug reported by eyang and fixed by eyang (scripts)<br>
     <b>/etc/profile.d does not exist on Debian</b><br>
     <blockquote>As part of post installation script, there is a symlink created in /etc/profile.d/hadoop-env.sh to source /etc/hadoop/hadoop-env.sh.  Therefore, users do not need to configure HADOOP_* environment.  Unfortunately, /etc/profile.d only exists in Ubuntu.  [Section 9.9 of the Debian Policy|http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.9] states:<br><br>{quote}<br>A program must not depend on environment variables to get reasonable defaults. (That&apos;s because these environment variables would ha...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7615">HADOOP-7615</a>.
     Major bug reported by eyang and fixed by eyang (scripts)<br>
     <b>Binary layout does not put share/hadoop/contrib/*.jar into the class path</b><br>
     <blockquote>For contrib projects, contrib jar files are not included in HADOOP_CLASSPATH in the binary layout.  Several projects jar files should be copied to $HADOOP_PREFIX/share/hadoop/lib for binary deployment.  The interesting jar files to include in $HADOOP_PREFIX/share/hadoop/lib are: capacity-scheduler, thriftfs, fairscheduler.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7625">HADOOP-7625</a>.
     Major bug reported by owen.omalley and fixed by owen.omalley <br>
     <b>TestDelegationToken is failing in 205</b><br>
     <blockquote>After the patches on Friday, org.apache.hadoop.hdfs.security.TestDelegationToken is failing.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7626">HADOOP-7626</a>.
     Major bug reported by eyang and fixed by eyang (scripts)<br>
     <b>Allow overwrite of HADOOP_CLASSPATH and HADOOP_OPTS</b><br>
     <blockquote>Quote email from Ashutosh Chauhan:<br><br>bq. There is a bug in hadoop-env.sh which prevents hcatalog server to start in secure settings. Instead of adding classpath, it overrides them. I was not able to verify where the bug belongs to, in HMS or in hadoop scripts. Looks like hadoop-env.sh is generated from hadoop-env.sh.template in installation process by HMS. Hand crafted patch follows:<br><br>bq. - export HADOOP_CLASSPATH=$f<br>bq. +export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$f<br><br>bq. -export HADOOP_OPTS=...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7630">HADOOP-7630</a>.
     Major bug reported by arpitgupta and fixed by eyang (conf)<br>
     <b>hadoop-metrics2.properties should have a property *.period set to a default value foe metrics</b><br>
     <blockquote>currently the hadoop-metrics2.properties file does not have a value set for *.period<br><br>This property is useful for metrics to determine when the property will refresh. We should set it to default of 60</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7631">HADOOP-7631</a>.
     Major bug reported by rramya and fixed by eyang (conf)<br>
     <b>In mapred-site.xml, stream.tmpdir is mapped to ${mapred.temp.dir} which is undeclared.</b><br>
     <blockquote>Streaming jobs seem to fail with the following exception:<br><br>{noformat}<br>Exception in thread &quot;main&quot; java.io.IOException: No such file or directory<br>        at java.io.UnixFileSystem.createFileExclusively(Native Method)<br>        at java.io.File.checkAndCreate(File.java:1704)<br>        at java.io.File.createTempFile(File.java:1792)<br>        at org.apache.hadoop.streaming.StreamJob.packageJobJar(StreamJob.java:603)<br>        at org.apache.hadoop.streaming.StreamJob.setJobConf(StreamJob.java:798)<br>        a...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7633">HADOOP-7633</a>.
     Major bug reported by arpitgupta and fixed by eyang (conf)<br>
     <b>log4j.properties should be added to the hadoop conf on deploy</b><br>
     <blockquote>currently the log4j properties are not present in the hadoop conf dir. We should add them so that log rotation happens appropriately and also define other logs that hadoop can generate for example the audit and the auth logs as well as the mapred summary logs etc.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7637">HADOOP-7637</a>.
     Major bug reported by eyang and fixed by eyang (build)<br>
     <b>Fair scheduler configuration file is not bundled in RPM</b><br>
     <blockquote>205 build of tar is fine, but rpm failed with:<br><br>{noformat}<br>      [rpm] Processing files: hadoop-0.20.205.0-1<br>      [rpm] warning: File listed twice: /usr/libexec<br>      [rpm] warning: File listed twice: /usr/libexec/hadoop-config.sh<br>      [rpm] warning: File listed twice: /usr/libexec/jsvc.i386<br>      [rpm] Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/hadoop_package_build_hortonfo/BUILD<br>      [rpm] error: Installed (but unpackaged) file(s) found:<br>      [rpm]    /etc/hadoop/fai...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7644">HADOOP-7644</a>.
     Blocker bug reported by owen.omalley and fixed by owen.omalley (security)<br>
     <b>Fix the delegation token tests to use the new style renewers</b><br>
     <blockquote>Currently, TestDelegationTokenRenewal and TestDelegationTokenFetcher use the old style renewal and fail.<br><br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7645">HADOOP-7645</a>.
     Blocker bug reported by atm and fixed by jnp (security)<br>
     <b>HTTP auth tests requiring Kerberos infrastructure are not disabled on branch-0.20-security</b><br>
     <blockquote>The back-port of HADOOP-7119 to branch-0.20-security included tests which require Kerberos infrastructure in order to run. In trunk and 0.23, these are disabled unless one enables the {{testKerberos}} maven profile. In branch-0.20-security, these tests are always run regardless, and so fail most of the time.<br><br>See this Jenkins build for an example: https://builds.apache.org/view/G-L/view/Hadoop/job/Hadoop-0.20-security/26/</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7649">HADOOP-7649</a>.
     Blocker bug reported by kihwal and fixed by jnp (security, test)<br>
     <b>TestMapredGroupMappingServiceRefresh and TestRefreshUserMappings  fail after HADOOP-7625</b><br>
     <blockquote>TestMapredGroupMappingServiceRefresh and TestRefreshUserMappings  fail after HADOOP-7625.<br>The classpath has been changed, so they try to create the rsrc file in a jar and fail.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7655">HADOOP-7655</a>.
     Major improvement reported by arpitgupta and fixed by arpitgupta <br>
     <b>provide a small validation script that smoke tests the installed cluster</b><br>
     <blockquote>currently we have scripts that will setup a hadoop cluster, create users etc. We should add a script that will smoke test the installed cluster. The script could run 3 small mr jobs teragen, terasort and teravalidate and cleanup once its done.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7658">HADOOP-7658</a>.
     Major bug reported by gkesavan and fixed by eyang <br>
     <b>to fix hadoop config template</b><br>
     <blockquote>hadoop rpm config template by default sets the HADOOP_SECURE_DN_USER, HADOOP_SECURE_DN_LOG_DIR &amp; HADOOP_SECURE_DN_PID_DIR <br>the above values should only be set for secured deployment ; <br># On secure datanodes, user to run the datanode as after dropping privileges<br>export HADOOP_SECURE_DN_USER=${HADOOP_HDFS_USER}<br><br># Where log files are stored.  $HADOOP_HOME/logs by default.<br>export HADOOP_LOG_DIR=${HADOOP_LOG_DIR}/$USER<br><br># Where log files are stored in the secure data environment.<br>export HADOOP_SE...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7661">HADOOP-7661</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>FileSystem.getCanonicalServiceName throws NPE for any file system uri that doesn&apos;t have an authority.</b><br>
     <blockquote>FileSystem.getCanonicalServiceName throws NPE for any file system uri that doesn&apos;t have an authority. <br><br>....<br>java.lang.NullPointerException<br>at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:138)<br>at org.apache.hadoop.security.SecurityUtil.buildDTServiceName(SecurityUtil.java:261)<br>at org.apache.hadoop.fs.FileSystem.getCanonicalServiceName(FileSystem.java:174)<br>....</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7674">HADOOP-7674</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>TestKerberosName fails in 20 branch.</b><br>
     <blockquote>TestKerberosName fails in 20 branch. In fact this test has got duplicated in 20, with a little change to the rules.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7676">HADOOP-7676</a>.
     Major bug reported by gkesavan and fixed by gkesavan <br>
     <b>add rules to the core-site.xml template</b><br>
     <blockquote>add rules for master and region in core-site.xml template.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7679">HADOOP-7679</a>.
     Major bug reported by rramya and fixed by rramya (conf)<br>
     <b>log4j.properties templates does not define mapred.jobsummary.logger</b><br>
     <blockquote>In templates/conf/hadoop-env.sh, HADOOP_JOBTRACKER_OPTS is defined as -Dsecurity.audit.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dmapred.jobsummary.logger=INFO,JSA ${HADOOP_JOBTRACKER_OPTS}<br>However, in templates/conf/hadoop-env.sh, instead of mapred.jobsummary.logger, hadoop.mapreduce.jobsummary.logger is defined as follows:<br>hadoop.mapreduce.jobsummary.logger=${hadoop.root.logger}<br>This is preventing collection of jobsummary logs.<br><br>We have to consistently use mapred.jobsummary.logg...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7681">HADOOP-7681</a>.
     Minor bug reported by arpitgupta and fixed by arpitgupta (conf)<br>
     <b>log4j.properties is missing properties for security audit and hdfs audit should be changed to info</b><br>
     <blockquote>(Arpit Gupta via Eric Yang)<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7683">HADOOP-7683</a>.
     Minor bug reported by arpitgupta and fixed by arpitgupta <br>
     <b>hdfs-site.xml template has properties that are not used in 20</b><br>
     <blockquote>properties dfs.namenode.http-address and dfs.namenode.https-address should be removed</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7684">HADOOP-7684</a>.
     Major bug reported by eyang and fixed by eyang (scripts)<br>
     <b>jobhistory server and secondarynamenode should have init.d script</b><br>
     <blockquote>                                              Added init.d script for jobhistory server and secondary namenode. (Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7685">HADOOP-7685</a>.
     Major bug reported by devaraj.k and fixed by eyang (scripts)<br>
     <b>Issues with hadoop-common-project\hadoop-common\src\main\packages\hadoop-setup-conf.sh file </b><br>
     <blockquote>hadoop-common-project\hadoop-common\src\main\packages\hadoop-setup-conf.sh has following issues<br>1. check_permission does not work as expected if there are two folders with $NAME as part of their name inside $PARENT<br>e.g. /home/hadoop/conf, /home/hadoop/someconf, <br>The result of `ls -ln $PARENT | grep -w $NAME| awk &apos;{print $3}&apos;` is non zero..it is 0 0 and hence the following if check becomes true.<br>{code:xml}<br>if [ &quot;$OWNER&quot; != &quot;0&quot; ]; then<br>RESULT=1<br>break<br>fi <br>{code}<br><br>2. Spelling mistake<br>{code:xml}<br>H...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7691">HADOOP-7691</a>.
     Major bug reported by gkesavan and fixed by eyang <br>
     <b>hadoop deb pkg should take a diff group id</b><br>
     <blockquote>                                              Fixed conflict uid for install packages. (Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7707">HADOOP-7707</a>.
     Major improvement reported by arpitgupta and fixed by arpitgupta (conf)<br>
     <b>improve config generator to allow users to specify proxy user, turn append on or off, turn webhdfs on or off</b><br>
     <blockquote>                                              Added toggle for dfs.support.append, webhdfs and hadoop proxy user to setup config script. (Arpit Gupta via Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7708">HADOOP-7708</a>.
     Critical bug reported by arpitgupta and fixed by eyang (conf)<br>
     <b>config generator does not update the properties file if on exists already</b><br>
     <blockquote>                                              Fixed hadoop-setup-conf.sh to handle config file consistently.  (Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7710">HADOOP-7710</a>.
     Major improvement reported by arpitgupta and fixed by arpitgupta <br>
     <b>create a script to setup application in order to create root directories for application such hbase, hcat, hive etc</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7711">HADOOP-7711</a>.
     Major bug reported by arpitgupta and fixed by arpitgupta (conf)<br>
     <b>hadoop-env.sh generated from templates has duplicate info</b><br>
     <blockquote>                                              Fixed recursive sourcing of HADOOP_OPTS environment variables (Arpit Gupta via Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7715">HADOOP-7715</a>.
     Major bug reported by arpitgupta and fixed by eyang (conf)<br>
     <b>see log4j Error when running mr jobs and certain dfs calls</b><br>
     <blockquote>                                              Removed unnecessary security logger configuration. (Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7720">HADOOP-7720</a>.
     Major improvement reported by arpitgupta and fixed by arpitgupta (conf)<br>
     <b>improve the hadoop-setup-conf.sh to read in the hbase user and setup the configs</b><br>
     <blockquote>                                              Added parameter for HBase user to setup config script. (Arpit Gupta via Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7721">HADOOP-7721</a>.
     Major bug reported by arpitgupta and fixed by jnp <br>
     <b>dfs.web.authentication.kerberos.principal expects the full hostname and does not replace _HOST with the hostname</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7724">HADOOP-7724</a>.
     Major bug reported by gkesavan and fixed by arpitgupta <br>
     <b>hadoop-setup-conf.sh should put proxy user info into the core-site.xml </b><br>
     <blockquote>                                              Fixed hadoop-setup-conf.sh to put proxy user in core-site.xml.  (Arpit Gupta via Eric Yang)<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-142">HDFS-142</a>.
     Blocker bug reported by rangadi and fixed by dhruba <br>
     <b>In 0.20, move blocks being written into a blocksBeingWritten directory</b><br>
     <blockquote>Before 0.18, when Datanode restarts, it deletes files under data-dir/tmp  directory since these files are not valid anymore. But in 0.18 it moves these files to normal directory incorrectly making them valid blocks. One of the following would work :<br><br>- remove the tmp files during upgrade, or<br>- if the files under /tmp are in pre-18 format (i.e. no generation), delete them.<br><br>Currently effect of this bug is that, these files end up failing block verification and eventually get deleted. But cause...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-200">HDFS-200</a>.
     Blocker new feature reported by szetszwo and fixed by dhruba <br>
     <b>In HDFS, sync() not yet guarantees data available to the new readers</b><br>
     <blockquote>In the append design doc (https://issues.apache.org/jira/secure/attachment/12370562/Appends.doc), it says<br>* A reader is guaranteed to be able to read data that was &apos;flushed&apos; before the reader opened the file<br><br>However, this feature is not yet implemented.  Note that the operation &apos;flushed&apos; is now called &quot;sync&quot;.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-561">HDFS-561</a>.
     Major sub-task reported by kzhang and fixed by kzhang (data-node, hdfs client)<br>
     <b>Fix write pipeline READ_TIMEOUT</b><br>
     <blockquote>When writing a file, the pipeline status read timeouts for datanodes are not set up properly.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-606">HDFS-606</a>.
     Major bug reported by shv and fixed by shv (name-node)<br>
     <b>ConcurrentModificationException in invalidateCorruptReplicas()</b><br>
     <blockquote>{{BlockManager.invalidateCorruptReplicas()}} iterates over DatanodeDescriptor-s while removing corrupt replicas from the descriptors. This causes {{ConcurrentModificationException}} if there is more than one replicas of the block. I ran into this exception debugging different scenarios in append, but it should be fixed in the trunk too.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-630">HDFS-630</a>.
     Major improvement reported by mry.maillist and fixed by clehene (hdfs client, name-node)<br>
     <b>In DFSOutputStream.nextBlockOutputStream(), the client can exclude specific datanodes when locating the next block.</b><br>
     <blockquote>created from hdfs-200.<br><br>If during a write, the dfsclient sees that a block replica location for a newly allocated block is not-connectable, it re-requests the NN to get a fresh set of replica locations of the block. It tries this dfs.client.block.write.retries times (default 3), sleeping 6 seconds between each retry ( see DFSClient.nextBlockOutputStream).<br><br>This setting works well when you have a reasonable size cluster; if u have few datanodes in the cluster, every retry maybe pick the dead-d...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-724">HDFS-724</a>.
     Blocker bug reported by szetszwo and fixed by hairong (data-node, hdfs client)<br>
     <b>Pipeline close hangs if one of the datanode is not responsive.</b><br>
     <blockquote>In the new pipeline design, pipeline close is implemented by sending an additional empty packet.  If one of the datanode does not response to this empty packet, the pipeline hangs.  It seems that there is no timeout.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-826">HDFS-826</a>.
     Major improvement reported by dhruba and fixed by dhruba (hdfs client)<br>
     <b>Allow a mechanism for an application to detect that datanode(s)  have died in the write pipeline</b><br>
     <blockquote>HDFS does not replicate the last block of the file that is being currently written to by an application. Every datanode death in the write pipeline decreases the reliability of the last block of the currently-being-written block. This situation can be improved if the application can be notified of a datanode death in the write pipeline. Then, the application can decide what is the right course of action to be taken on this event.<br><br>In our use-case, the application can close the file on the fir...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-895">HDFS-895</a>.
     Major improvement reported by dhruba and fixed by tlipcon (hdfs client)<br>
     <b>Allow hflush/sync to occur in parallel with new writes to the file</b><br>
     <blockquote>In the current trunk, the HDFS client methods writeChunk() and hflush./sync are syncronized. This means that if a hflush/sync is in progress, an applicationn cannot write data to the HDFS client buffer. This reduces the write throughput of the transaction log in HBase. <br><br>The hflush/sync should allow new writes to happen to the HDFS client even when a hflush/sync is in progress. It can record the seqno of the message for which it should receice the ack, indicate to the DataStream thread to sta...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-988">HDFS-988</a>.
     Blocker bug reported by dhruba and fixed by eli (name-node)<br>
     <b>saveNamespace race can corrupt the edits log</b><br>
     <blockquote>The adminstrator puts the namenode is safemode and then issues the savenamespace command. This can corrupt the edits log. The problem is that  when the NN enters safemode, there could still be pending logSycs occuring from other threads. Now, the saveNamespace command, when executed, would save a edits log with partial writes. I have seen this happen on 0.20.<br><br>https://issues.apache.org/jira/browse/HDFS-909?focusedCommentId=12828853&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1054">HDFS-1054</a>.
     Major improvement reported by tlipcon and fixed by tlipcon (hdfs client)<br>
     <b>Remove unnecessary sleep after failure in nextBlockOutputStream</b><br>
     <blockquote>If DFSOutputStream fails to create a pipeline, it currently sleeps 6 seconds before retrying. I don&apos;t see a great reason to wait at all, much less 6 seconds (especially now that HDFS-630 ensures that a retry won&apos;t go back to the bad node). We should at least make it configurable, and perhaps something like backoff makes some sense.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1057">HDFS-1057</a>.
     Blocker sub-task reported by tlipcon and fixed by rash37 (data-node)<br>
     <b>Concurrent readers hit ChecksumExceptions if following a writer to very end of file</b><br>
     <blockquote>In BlockReceiver.receivePacket, it calls replicaInfo.setBytesOnDisk before calling flush(). Therefore, if there is a concurrent reader, it&apos;s possible to race here - the reader will see the new length while those bytes are still in the buffers of BlockReceiver. Thus the client will potentially see checksum errors or EOFs. Additionally, the last checksum chunk of the file is made accessible to readers even though it is not stable.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1118">HDFS-1118</a>.
     Major bug reported by zshao and fixed by zshao <br>
     <b>DFSOutputStream socket leak when cannot connect to DataNode</b><br>
     <blockquote>The offending code is in {{DFSOutputStream.nextBlockOutputStream}}<br><br>This function retries several times to call {{createBlockOutputStream}}. Each time when it fails, it leaves a {{Socket}} object in {{DFSOutputStream.s}}.<br>That object is never closed, but overwritten the next time {{createBlockOutputStream}} is called.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1122">HDFS-1122</a>.
     Major sub-task reported by rash37 and fixed by rash37 <br>
     <b>client block verification may result in blocks in DataBlockScanner prematurely</b><br>
     <blockquote>found that when the DN uses client verification of a block that is open for writing, it will add it to the DataBlockScanner prematurely. </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1141">HDFS-1141</a>.
     Blocker bug reported by tlipcon and fixed by tlipcon (name-node)<br>
     <b>completeFile does not check lease ownership</b><br>
     <blockquote>completeFile should check that the caller still owns the lease of the file that it&apos;s completing. This is for the &apos;testCompleteOtherLeaseHoldersFile&apos; case in HDFS-1139.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1164">HDFS-1164</a>.
     Major bug reported by eli and fixed by tlipcon (contrib/hdfsproxy)<br>
     <b>TestHdfsProxy is failing</b><br>
     <blockquote>TestHdfsProxy is failing on trunk, seen in HDFS-1132 and HDFS-1143. It doesn&apos;t look like hudson posts test results for contrib and it&apos;s hard to see what&apos;s going on from the raw console output. Can someone with access to hudson upload the individual test output for TestHdfsProxy so we can see what the issue is?</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1186">HDFS-1186</a>.
     Blocker bug reported by tlipcon and fixed by tlipcon (data-node)<br>
     <b>0.20: DNs should interrupt writers at start of recovery</b><br>
     <blockquote>When block recovery starts (eg due to NN recovering lease) it needs to interrupt any writers currently writing to those blocks. Otherwise, an old writer (who hasn&apos;t realized he lost his lease) can continue to write+sync to the blocks, and thus recovery ends up truncating data that has been sync()ed.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1197">HDFS-1197</a>.
     Major bug reported by tlipcon and fixed by  (data-node, hdfs client, name-node)<br>
     <b>Blocks are considered &quot;complete&quot; prematurely after commitBlockSynchronization or DN restart</b><br>
     <blockquote>I saw this failure once on my internal Hudson job that runs the append tests 48 times a day:<br>junit.framework.AssertionFailedError: expected:&lt;114688&gt; but was:&lt;98304&gt;<br>	at org.apache.hadoop.hdfs.AppendTestUtil.check(AppendTestUtil.java:112)<br>	at org.apache.hadoop.hdfs.TestFileAppend3.testTC2(TestFileAppend3.java:116)<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1202">HDFS-1202</a>.
     Major bug reported by tlipcon and fixed by tlipcon (data-node)<br>
     <b>DataBlockScanner throws NPE when updated before initialized</b><br>
     <blockquote>Missing an isInitialized() check in updateScanStatusInternal</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1204">HDFS-1204</a>.
     Major bug reported by tlipcon and fixed by rash37 <br>
     <b>0.20: Lease expiration should recover single files, not entire lease holder</b><br>
     <blockquote>This was brought up in HDFS-200 but didn&apos;t make it into the branch on Apache.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1207">HDFS-1207</a>.
     Major bug reported by tlipcon and fixed by tlipcon (name-node)<br>
     <b>0.20-append: stallReplicationWork should be volatile</b><br>
     <blockquote>the stallReplicationWork member in FSNamesystem is accessed by multiple threads without synchronization, but isn&apos;t marked volatile. I believe this is responsible for about 1% failure rate on TestFileAppend4.testAppendSyncChecksum* on my 8-core test boxes (looking at logs I see replication happening even though we&apos;ve supposedly disabled it)</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1210">HDFS-1210</a>.
     Trivial improvement reported by tlipcon and fixed by tlipcon (hdfs client)<br>
     <b>DFSClient should log exception when block recovery fails</b><br>
     <blockquote>Right now we just retry without necessarily showing the exception. It can be useful to see what the error was that prevented the recovery RPC from succeeding.<br>(I believe this only applies in 0.20 style of block recovery)</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1211">HDFS-1211</a>.
     Minor improvement reported by tlipcon and fixed by tlipcon (data-node)<br>
     <b>0.20 append: Block receiver should not log &quot;rewind&quot; packets at INFO level</b><br>
     <blockquote>In the 0.20 append implementation, it logs an INFO level message for every packet that &quot;rewinds&quot; the end of the block file. This is really noisy for applications like HBase which sync every edit.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1218">HDFS-1218</a>.
     Critical bug reported by tlipcon and fixed by tlipcon (data-node)<br>
     <b>20 append: Blocks recovered on startup should be treated with lower priority during block synchronization</b><br>
     <blockquote>When a datanode experiences power loss, it can come back up with truncated replicas (due to local FS journal replay). Those replicas should not be allowed to truncate the block during block synchronization if there are other replicas from DNs that have _not_ restarted.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1242">HDFS-1242</a>.
     Major test reported by tlipcon and fixed by tlipcon <br>
     <b>0.20 append: Add test for appendFile() race solved in HDFS-142</b><br>
     <blockquote>This is a unit test that didn&apos;t make it into branch-0.20-append, but worth having in TestFileAppend4.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1252">HDFS-1252</a>.
     Major test reported by tlipcon and fixed by tlipcon (test)<br>
     <b>TestDFSConcurrentFileOperations broken in 0.20-appendj</b><br>
     <blockquote>This test currently has several flaws:<br> - It calls DN.updateBlock with a BlockInfo instance, which then causes java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.hdfs.server.namenode.BlocksMap$BlockInfo.&lt;init&gt;() in the logs when the DN tries to send blockReceived for the block<br> - It assumes that getBlockLocations returns an up-to-date length block after a sync, which is false. It happens to work because it calls getBlockLocations directly on the NN, and thus gets a...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1260">HDFS-1260</a>.
     Critical bug reported by tlipcon and fixed by tlipcon <br>
     <b>0.20: Block lost when multiple DNs trying to recover it to different genstamps</b><br>
     <blockquote>Saw this issue on a cluster where some ops people were doing network changes without shutting down DNs first. So, recovery ended up getting started at multiple different DNs at the same time, and some race condition occurred that caused a block to get permanently stuck in recovery mode. What seems to have happened is the following:<br>- FSDataset.tryUpdateBlock called with old genstamp 7091, new genstamp 7094, while the block in the volumeMap (and on filesystem) was genstamp 7093<br>- we find the b...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1346">HDFS-1346</a>.
     Major bug reported by hairong and fixed by hairong (data-node, hdfs client)<br>
     <b>DFSClient receives out of order packet ack</b><br>
     <blockquote>When running 0.20 patched with HDFS-101, we sometimes see an error as follow:<br>WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_-2871223654872350746_21421120java.io.IOException: Responseprocessor: Expecting seq<br>no for block blk_-2871223654872350746_21421120 10280 but received 10281<br>at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2570)<br><br>This indicates that DFS client expects an ack for packet N, but receives an ack for packe...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1520">HDFS-1520</a>.
     Major new feature reported by hairong and fixed by hairong (name-node)<br>
     <b>HDFS 20 append: Lightweight NameNode operation to trigger lease recovery</b><br>
     <blockquote>Currently HBase uses append to trigger the close of HLog during Hlog split. Append is a very expensive operation, which involves not only NameNode operations but creating a writing pipeline. If one of datanodes on the pipeline has a problem, this recovery may takes minutes. I&apos;d like implement a lightweight NameNode operation to trigger lease recovery and make HBase to use this instead.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1554">HDFS-1554</a>.
     Major improvement reported by hairong and fixed by hairong <br>
     <b>Append 0.20: New semantics for recoverLease</b><br>
     <blockquote>                                              Change recoverLease API to return if the file is closed or not. It also change the semantics of recoverLease to start lease recovery immediately.<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1555">HDFS-1555</a>.
     Major improvement reported by hairong and fixed by hairong <br>
     <b>HDFS 20 append: Disallow pipeline recovery if a file is already being lease recovered</b><br>
     <blockquote>When a file is under lease recovery and the writer is still alive, the write pipeline will be killed and then the writer will start a pipeline recovery. Sometimes the pipeline recovery may race before the lease recovery and as a result fail the lease recovery. This is very bad if we want to support the strong recoverLease semantics in HDFS-1554. So it would be nice if we could disallow a file&apos;s pipeline recovery while its lease recovery is in progress.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1779">HDFS-1779</a>.
     Major bug reported by umamaheswararao and fixed by umamaheswararao (data-node, name-node)<br>
     <b>After NameNode restart , Clients can not read partial files even after client invokes Sync.</b><br>
     <blockquote>In Append HDFS-200 issue,<br>If file has 10 blocks and after writing 5 blocks if client invokes sync method then NN will persist the blocks information in edits. <br>After this if we restart the NN, All the DataNodes will reregister with NN. But DataNodes are not sending the blocks being written information to NN. DNs are sending the blocksBeingWritten information in DN startup. So, here NameNode can not find that the 5 persisted blocks belongs to which datanodes. This information can build based o...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1836">HDFS-1836</a>.
     Major bug reported by hkdennis2k and fixed by bharathm (hdfs client)<br>
     <b>Thousand of CLOSE_WAIT socket </b><br>
     <blockquote>$ /usr/sbin/lsof -i TCP:50010 | grep -c CLOSE_WAIT<br>4471<br><br>It is better if everything runs normal. <br>However, from time to time there are some &quot;DataStreamer Exception: java.net.SocketTimeoutException&quot; and &quot;DFSClient.processDatanodeError(2507) | Error Recovery for&quot; can be found from log file and the number of CLOSE_WAIT socket just keep increasing<br><br>The CLOSE_WAIT handles may remain for hours and days; then &quot;Too many open file&quot; some day.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2053">HDFS-2053</a>.
     Minor bug reported by miguno and fixed by miguno (name-node)<br>
     <b>Bug in INodeDirectory#computeContentSummary warning</b><br>
     <blockquote>*How to reproduce*<br><br>{code}<br># create test directories<br>$ hadoop fs -mkdir /hdfs-1377/A<br>$ hadoop fs -mkdir /hdfs-1377/B<br>$ hadoop fs -mkdir /hdfs-1377/C<br><br># ...add some test data (few kB or MB) to all three dirs...<br><br># set space quota for subdir C only<br>$ hadoop dfsadmin -setSpaceQuota 1g /hdfs-1377/C<br><br># the following two commands _on the parent dir_ trigger the warning<br>$ hadoop fs -dus /hdfs-1377<br>$ hadoop fs -count -q /hdfs-1377<br>{code}<br><br>Warning message in the namenode logs:<br><br>{code}<br>2011-06-09 09:42...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2117">HDFS-2117</a>.
     Minor bug reported by eli and fixed by eli (data-node)<br>
     <b>DiskChecker#mkdirsWithExistsAndPermissionCheck may return true even when the dir is not created</b><br>
     <blockquote>In branch-0.20-security as part of HADOOP-6566, DiskChecker#mkdirsWithExistsAndPermissionCheck will return true even if it wasn&apos;t able to create the directory, which means instead of throwing a DiskErrorException the code will proceed to getFileStatus and throw a FNF exception. Post HADOOP-7040, which modified makeInstance to catch not just DiskErrorExceptions but IOExceptions as well, this is not an issue since now the exception is caught either way. But for future modifications we should st...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2190">HDFS-2190</a>.
     Major bug reported by atm and fixed by atm (name-node)<br>
     <b>NN fails to start if it encounters an empty or malformed fstime file</b><br>
     <blockquote>On startup, the NN reads the fstime file of all the configured dfs.name.dirs to determine which one to load. However, if any of the searched directories contain an empty or malformed fstime file, the NN will fail to start. The NN should be able to just proceed with starting and ignore the directory containing the bad fstime file.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2202">HDFS-2202</a>.
     Major new feature reported by eepayne and fixed by eepayne (balancer, data-node)<br>
     <b>Changes to balancer bandwidth should not require datanode restart.</b><br>
     <blockquote>                    New dfsadmin command added: [-setBalancerBandwidth &amp;lt;bandwidth&amp;gt;] where bandwidth is max network bandwidth in bytes per second that the balancer is allowed to use on each datanode during balacing.&lt;br/&gt;<br><br>This is an incompatible change in 0.23.  The versions of ClientProtocol and DatanodeProtocol are changed.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2259">HDFS-2259</a>.
     Minor bug reported by eli and fixed by eli (data-node)<br>
     <b>DN web-UI doesn&apos;t work with paths that contain html </b><br>
     <blockquote>The 20-based DN web UI doesn&apos;t work with paths that contain html. The paths need to be unescaped when used to access the file and escaped when printed for navigation.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2284">HDFS-2284</a>.
     Major sub-task reported by sanjay.radia and fixed by szetszwo <br>
     <b>Write Http access to HDFS</b><br>
     <blockquote>HFTP allows on read access to HDFS via HTTP. Add write HTTP access to HDFS.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2300">HDFS-2300</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>TestFileAppend4 and TestMultiThreadedSync fail on 20.append and 20-security.</b><br>
     <blockquote>TestFileAppend4 and TestMultiThreadedSync fail on the 20.append and 20-security branch.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2309">HDFS-2309</a>.
     Major bug reported by jnp and fixed by jnp <br>
     <b>TestRenameWhileOpen fails in branch-0.20-security</b><br>
     <blockquote>TestRenameWhileOpen is failing in branch-0.20-security.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2317">HDFS-2317</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Read access to HDFS using HTTP REST</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2318">HDFS-2318</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Provide authentication to webhdfs using SPNEGO</b><br>
     <blockquote>                                              Added two new conf properties dfs.web.authentication.kerberos.principal and dfs.web.authentication.kerberos.keytab for the SPNEGO servlet filter.<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2320">HDFS-2320</a>.
     Major bug reported by sureshms and fixed by sureshms (data-node, hdfs client, name-node)<br>
     <b>Make merged protocol changes from 0.20-append to 0.20-security compatible with previous releases.</b><br>
     <blockquote>0.20-append changes have been merged to 0.20-security. The merge has changes to version numbers in several protocols. This jira makes the protocol changes compatible with older release, allowing clients running older version to talk to server running 205 version and clients running 205 version talk to older servers running 203, 204.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2325">HDFS-2325</a>.
     Blocker bug reported by charlescearl and fixed by kihwal (contrib/fuse-dfs, libhdfs)<br>
     <b>Fuse-DFS fails to build on Hadoop 20.203.0</b><br>
     <blockquote>In building fuse-dfs, the compile fails due to an argument mismatch between call to hdfsConnectAsUser on line 40 of src/contrib/fuse-dfs/src/fuse_connect.c and an earlier definition of hdfsConnectAsUser given in src/c++/libhdfs/hdfs.h.<br>I suggest changing hdfs.h. I made the following change in hdfs.h in my local copy:<br><br>106c106,107<br>&lt;      hdfsFS hdfsConnectAsUser(const char* host, tPort port, const char *user);<br>---<br>&gt;   //     hdfsFS hdfsConnectAsUser(const char* host, tPort port, const char *us...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2328">HDFS-2328</a>.
     Critical bug reported by daryn and fixed by owen.omalley <br>
     <b>hftp throws NPE if security is not enabled on remote cluster</b><br>
     <blockquote>If hftp cannot locate either a hdfs or hftp token in the ugi, it will call {{getDelegationToken}} to acquire one from the remote nn.  This method may return a null {{Token}} if security is disabled(*)  on the remote nn.  Hftp will internally call its {{setDelegationToken}} which will throw a NPE when the token is {{null}}.<br><br>(*) Actually, if any problem happens while acquiring the token it assumes security is disabled!  However, it&apos;s a pre-existing issue beyond the scope of the token renewal c...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2331">HDFS-2331</a>.
     Major bug reported by abhijit.shingate and fixed by abhijit.shingate (hdfs client)<br>
     <b>Hdfs compilation fails</b><br>
     <blockquote>I am trying to perform complete build from trunk folder but the compilation fails.<br><br>*Commandline:*<br>mvn clean install  <br><br>*Error Message:*<br><br>[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.<br>3.2:compile (default-compile) on project hadoop-hdfs: Compilation failure<br>[ERROR] \Hadoop\SVN\trunk\hadoop-hdfs-project\hadoop-hdfs\src\main\java\org<br>\apache\hadoop\hdfs\web\WebHdfsFileSystem.java:[209,21] type parameters of &lt;T&gt;T<br>cannot be determined; no unique maximal instance...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2333">HDFS-2333</a>.
     Major bug reported by ikelly and fixed by szetszwo <br>
     <b>HDFS-2284 introduced 2 findbugs warnings on trunk</b><br>
     <blockquote>When HDFS-2284 was submitted it made DFSOutputStream public which triggered two SC_START_IN_CTOR findbug warnings.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2338">HDFS-2338</a>.
     Major sub-task reported by jnp and fixed by jnp <br>
     <b>Configuration option to enable/disable webhdfs.</b><br>
     <blockquote>                                              Added a conf property dfs.webhdfs.enabled for enabling/disabling webhdfs.<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2340">HDFS-2340</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Support getFileBlockLocations and getDelegationToken in webhdfs</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2342">HDFS-2342</a>.
     Blocker bug reported by kihwal and fixed by szetszwo (build)<br>
     <b>TestSleepJob and TestHdfsProxy broken after HDFS-2284</b><br>
     <blockquote>After HDFS-2284, TestSleepJob and TestHdfsProxy are failing.<br>The both work in rev 1167444 and fail in rev 1167663.<br>It will be great if they can be fixed for 205.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2348">HDFS-2348</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Support getContentSummary and getFileChecksum in webhdfs</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2356">HDFS-2356</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>webhdfs: support case insensitive query parameter names</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2358">HDFS-2358</a>.
     Major bug reported by rajsaha and fixed by daryn (name-node)<br>
     <b>NPE when the default filesystem&apos;s uri has no authority</b><br>
     <blockquote>                                              Give meaningful error message instead of NPE.<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2359">HDFS-2359</a>.
     Major bug reported by rajsaha and fixed by jeagles (data-node)<br>
     <b>NPE found in Datanode log while Disk failed during different HDFS operation</b><br>
     <blockquote>Scenario:<br>I have a cluster of 4 DN ,each of them have 12disks.<br><br>In hdfs-site.xml I have &quot;dfs.datanode.failed.volumes.tolerated=3&quot; <br><br>During the execution of distcp (hdfs-&gt;hdfs), I am failing 3 disks in one Datanode, by making Data Directory permission 000, The distcp job is successful but , I am getting some NullPointerException in Datanode log<br><br>In one thread<br>$hadoop distcp  /user/$HADOOPQA_USER/data1 /user/$HADOOPQA_USER/data3<br><br>In another thread in a datanode<br>$ chmod 000 /xyz/{0,1,2}/hadoop/v...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2361">HDFS-2361</a>.
     Critical bug reported by rajsaha and fixed by jnp (name-node)<br>
     <b>hftp is broken</b><br>
     <blockquote>Distcp with hftp is failing.<br><br>{noformat}<br>$hadoop   distcp hftp://&lt;NNhostname&gt;:50070/user/hadoopqa/1316814737/newtemp 1316814737/as<br>11/09/23 21:52:33 INFO tools.DistCp: srcPaths=[hftp://&lt;NNhostname&gt;:50070/user/hadoopqa/1316814737/newtemp]<br>11/09/23 21:52:33 INFO tools.DistCp: destPath=1316814737/as<br>Retrieving token from: https://&lt;NN IP&gt;:50470/getDelegationToken<br>Retrieving token from: https://&lt;NN IP&gt;:50470/getDelegationToken?renewer=mapred<br>11/09/23 21:52:34 INFO security.TokenCache: Got dt for h...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2366">HDFS-2366</a>.
     Major bug reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs throws a npe when ugi is null from getDelegationToken</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2368">HDFS-2368</a>.
     Major bug reported by arpitgupta and fixed by szetszwo <br>
     <b>defaults created for web keytab and principal, these properties should not have defaults</b><br>
     <blockquote>the following defaults are set in hdfs-defaults.xml<br><br>&lt;property&gt;<br>  &lt;name&gt;dfs.web.authentication.kerberos.principal&lt;/name&gt;<br>  &lt;value&gt;HTTP/${dfs.web.hostname}@${kerberos.realm}&lt;/value&gt;<br>  &lt;description&gt;<br>    The HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint.<br><br>    The HTTP Kerberos principal MUST start with &apos;HTTP/&apos; per Kerberos<br>    HTTP SPENGO specification.<br>  &lt;/description&gt;<br>&lt;/property&gt;<br><br>&lt;property&gt;<br>  &lt;name&gt;dfs.web.authentication.kerberos.keytab&lt;/name&gt;<br>  &lt;value&gt;${user.home}/dfs.web....</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2373">HDFS-2373</a>.
     Major bug reported by arpitgupta and fixed by arpitgupta <br>
     <b>Commands using webhdfs and hftp print unnecessary debug information on the console with security enabled</b><br>
     <blockquote>run an hdfs command using either hftp or webhdfs and it prints the following line to the console (system out)<br><br>Retrieving token from: https://NN_HOST:50470/getDelegationToken<br><br><br>Probably in the code where we get the delegation token. This should be removed as people using the dfs commands to get a handle to the content such as dfs -cat will now get an extra line that is not part of the actual content. This should either be only in the log or not logged at all.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2375">HDFS-2375</a>.
     Blocker bug reported by sureshms and fixed by sureshms (hdfs client)<br>
     <b>TestFileAppend4 fails in 0.20.205 branch</b><br>
     <blockquote>TestFileAppend4 fails due to change from HDFS-2333. The test uses reflection to get to the method DFSOutputStream#getNumCurrentReplicas(). Since HDFS-2333 patch change this method from public to private, reflection get the method fails resulting in test failures.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2385">HDFS-2385</a>.
     Major sub-task reported by szetszwo and fixed by szetszwo <br>
     <b>Support delegation token renewal in webhdfs</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2392">HDFS-2392</a>.
     Critical bug reported by rajsaha and fixed by daryn (name-node)<br>
     <b>Dist with hftp is failing again</b><br>
     <blockquote>$ hadoop distcp hftp://&lt;NN Hostname&gt;:50070/user/hadoopqa/input1/part-00000 /user/hadoopqa/out3<br>11/09/30 18:57:59 INFO tools.DistCp: srcPaths=[hftp://&lt;NN Hostname&gt;:50070/user/hadoopqa/input1/part-00000]<br>11/09/30 18:57:59 INFO tools.DistCp: destPath=/user/hadoopqa/out3<br>11/09/30 18:58:00 INFO security.TokenCache: Got dt for<br>hftp://&lt;NN Hostname&gt;:50070/user/hadoopqa/input1/part-00000;uri=&lt;NN IP&gt;:50470;t.service=&lt;NN IP&gt;:50470<br>11/09/30 18:58:00 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN toke...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2395">HDFS-2395</a>.
     Critical bug reported by arpitgupta and fixed by szetszwo <br>
     <b>webhdfs api&apos;s should return a root element in the json response</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2403">HDFS-2403</a>.
     Major bug reported by szetszwo and fixed by szetszwo <br>
     <b>The renewer in NamenodeWebHdfsMethods.generateDelegationToken(..) is not used</b><br>
     <blockquote>Below are some suggestions from Suresh.<br># renewer not used in #generateDelegationToken<br># put() does not use InputStream in and should not throw URISyntaxException<br># post() does not use InputStream in and should not throw URISyntaxException<br># get() should not throw URISyntaxException<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2404">HDFS-2404</a>.
     Major bug reported by arpitgupta and fixed by sureshms <br>
     <b>webhdfs liststatus json response is not correct</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2408">HDFS-2408</a>.
     Blocker bug reported by stack and fixed by stack (hdfs client)<br>
     <b>DFSClient#getNumCurrentReplicas is package private in 205 but public in branch-0.20-append</b><br>
     <blockquote>The below commit broke hdfs-826 for hbase in 205 rc1.  It changes the accessiblity from public to package private on getNumCurrentReplicas and now current shipping hbase&apos;s at least cannot get at this method.<br><br>{code}<br>Revision 1174483 - (view) (download) (annotate) - [select for diffs] <br>Modified Fri Sep 23 01:30:18 2011 UTC (13 days, 4 hours ago) by szetszwo <br>File length: 136876 byte(s) <br>Diff to previous 1174479 (colored)<br>svn merge -c 1171137 from branch-0.20-security for HDFS-2333.<br>{code}<br><br>Her...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2411">HDFS-2411</a>.
     Major bug reported by arpitgupta and fixed by jnp <br>
     <b>with webhdfs enabled in secure mode the auth to local mappings are not being respected.</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1734">MAPREDUCE-1734</a>.
     Blocker improvement reported by tomwhite and fixed by tlipcon (documentation)<br>
     <b>Un-deprecate the old MapReduce API in the 0.20 branch</b><br>
     <blockquote>This issue is to un-deprecate the &quot;old&quot; MapReduce API (in o.a.h.mapred) in the next 0.20 release, as discussed at http://www.mail-archive.com/mapreduce-dev@hadoop.apache.org/msg01833.html</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2187">MAPREDUCE-2187</a>.
     Major bug reported by azaroth and fixed by anupamseth <br>
     <b>map tasks timeout during sorting</b><br>
     <blockquote>                                              I just committed this. Thanks Anupam!<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2324">MAPREDUCE-2324</a>.
     Major bug reported by tlipcon and fixed by revans2 <br>
     <b>Job should fail if a reduce task can&apos;t be scheduled anywhere</b><br>
     <blockquote>If there&apos;s a reduce task that needs more disk space than is available on any mapred.local.dir in the cluster, that task will stay pending forever. For example, we produced this in a QA cluster by accidentally running terasort with one reducer - since no mapred.local.dir had 1T free, the job remained in pending state for several days. The reason for the &quot;stuck&quot; task wasn&apos;t clear from a user perspective until we looked at the JT logs.<br><br>Probably better to just fail the job if a reduce task goes ...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2489">MAPREDUCE-2489</a>.
     Major bug reported by naisbitt and fixed by naisbitt (jobtracker)<br>
     <b>Jobsplits with random hostnames can make the queue unusable</b><br>
     <blockquote>We saw an issue where a custom InputSplit was returning invalid hostnames for the splits that were then causing the JobTracker to attempt to excessively resolve host names.  This caused a major slowdown for the JobTracker.  We should prevent invalid InputSplit hostnames from affecting everyone else.<br><br>I propose we implement some verification for the hostnames to try to ensure that we only do DNS lookups on valid hostnames (and fail otherwise).  We could also fail the job after a certain number...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2494">MAPREDUCE-2494</a>.
     Major improvement reported by revans2 and fixed by revans2 (distributed-cache)<br>
     <b>Make the distributed cache delete entires using LRU priority</b><br>
     <blockquote>                    Added config option mapreduce.tasktracker.cache.local.keep.pct to the TaskTracker.  It is the target percentage of the local distributed cache that should be kept in between garbage collection runs.  In practice it will delete unused distributed cache entries in LRU order until the size of the cache is less than mapreduce.tasktracker.cache.local.keep.pct of the maximum cache size.  This is a floating point value between 0.0 and 1.0.  The default is 0.95.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2549">MAPREDUCE-2549</a>.
     Major bug reported by devaraj.k and fixed by devaraj.k (contrib/eclipse-plugin, contrib/streaming)<br>
     <b>Potential resource leaks in HadoopServer.java, RunOnHadoopWizard.java and Environment.java</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2610">MAPREDUCE-2610</a>.
     Major bug reported by jrottinghuis and fixed by jrottinghuis (client)<br>
     <b>Inconsistent API JobClient.getQueueAclsForCurrentUser</b><br>
     <blockquote>Client needs access to the current user&apos;s queue name.<br>Public method JobClient.getQueueAclsForCurrentUser() returns QueueAclsInfo[].<br>The QueueAclsInfo class has default access. A public method should not return a package-private class.<br><br>The QueueAclsInfo class, its two constructors, getQueueName, and getOperations methods should be public.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2650">MAPREDUCE-2650</a>.
     Major bug reported by sherri_chen and fixed by sherri_chen <br>
     <b>back-port MAPREDUCE-2238 to 0.20-security</b><br>
     <blockquote>Dev had seen the attempt directory permission getting set to 000 or 111 in the CI builds and tests run on dev desktops with 0.20-security.<br>MAPREDUCE-2238 reported and fixed the issue for 0.22.0, back-port to 0.20-security is needed.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2705">MAPREDUCE-2705</a>.
     Major bug reported by tgraves and fixed by tgraves (tasktracker)<br>
     <b>tasks localized and launched serially by TaskLauncher - causing other tasks to be delayed</b><br>
     <blockquote>The current TaskLauncher serially launches new tasks one at a time. During the launch it does the localization and then starts the map/reduce task.  This can cause any other tasks to be blocked waiting for the current task to be localized and started. In some instances we have seen a task that has a large file to localize (1.2MB) block another task for about 40 minutes. This particular task being blocked was a cleanup task which caused the job to be delayed finishing for the 40 minutes.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2729">MAPREDUCE-2729</a>.
     Major improvement reported by sherri_chen and fixed by sherri_chen <br>
     <b>Reducers are always counted having &quot;pending tasks&quot; even if they can&apos;t be scheduled yet because not enough of their mappers have completed</b><br>
     <blockquote>In capacity scheduler, number of users in a queue needing slots are calculated based on whether users&apos; jobs have any pending tasks.<br>This works fine for map tasks. However, for reduce tasks, jobs do not need reduce slots until the minimum number of map tasks have been completed.<br><br>Here, we add checking whether reduce is ready to schedule (i.e. if a job has completed enough map tasks) when we increment number of users in a queue needing reduce slots.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2764">MAPREDUCE-2764</a>.
     Major bug reported by daryn and fixed by owen.omalley <br>
     <b>Fix renewal of dfs delegation tokens</b><br>
     <blockquote>                                              Generalizes token renewal and canceling to a common interface and provides a plugin interface for adding renewers for new kinds of tokens. Hftp changed to store the tokens as HFTP and renew them over http.<br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2777">MAPREDUCE-2777</a>.
     Major new feature reported by jeagles and fixed by amar_kamat <br>
     <b>Backport MAPREDUCE-220 to Hadoop 20 security branch</b><br>
     <blockquote>                    Adds cumulative cpu usage and total heap usage to task counters. This is a backport of &lt;a href=&quot;/jira/browse/MAPREDUCE-220&quot; title=&quot;Collecting cpu and memory usage for MapReduce tasks&quot;&gt;&lt;strike&gt;MAPREDUCE-220&lt;/strike&gt;&lt;/a&gt; and &lt;a href=&quot;/jira/browse/MAPREDUCE-2469&quot; title=&quot;Task counters should also report the total heap usage of the task&quot;&gt;&lt;strike&gt;MAPREDUCE-2469&lt;/strike&gt;&lt;/a&gt;.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2780">MAPREDUCE-2780</a>.
     Major sub-task reported by daryn and fixed by daryn <br>
     <b>Standardize the value of token service</b><br>
     <blockquote>The token&apos;s service field must (currently) be set to &quot;ip:port&quot;.  All the producers of a token are independently building the service string.  This should be done via a common method to reduce the chance of error, and to facilitate the field value being easily changed in the (near) future.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2852">MAPREDUCE-2852</a>.
     Major bug reported by eli and fixed by kihwal (tasktracker)<br>
     <b>Jira for YDH bug 2854624 </b><br>
     <blockquote>The DefaultTaskController and LinuxTaskController reference Yahoo! internal bug 2854624:<br><br>{code}<br>FileSystem rawFs = FileSystem.getLocal(getConf()).getRaw();<br>long logSize = 0; //TODO: Ref BUG:2854624<br>{code}<br><br>This jira tracks this TODO. If someone w/ access to Yahoo&apos;s bugzilla could update this jira with what the bug is that would be great.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2915">MAPREDUCE-2915</a>.
     Major bug reported by kihwal and fixed by kihwal (task-controller)<br>
     <b>LinuxTaskController does not work when JniBasedUnixGroupsNetgroupMapping or JniBasedUnixGroupsMapping is enabled</b><br>
     <blockquote>When a job is submitted, LinuxTaskController launches the native task-controller binary for job initialization. The native program does a series of prep work and call execv() to run JobLocalizer.  It was observed that JobLocalizer does fails to run when JniBasedUnixGroupsNetgroupMapping or JniBasedUnixGroupsMapping is enabled, resulting in 100% job failures.<br><br>JobLocalizer normally does not need the native library (libhadoop) for its functioning, but enabling a JNI user-to-group mapping functi...</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2928">MAPREDUCE-2928</a>.
     Major sub-task reported by eli and fixed by eli (tasktracker)<br>
     <b>MR-2413 improvements</b><br>
     <blockquote>Tracks improvements to MR-2413. See [this comment|https://issues.apache.org/jira/browse/MAPREDUCE-2413?focusedCommentId=13095073&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13095073].</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2981">MAPREDUCE-2981</a>.
     Major improvement reported by matei and fixed by matei (contrib/fair-share)<br>
     <b>Backport trunk fairscheduler to 0.20-security branch</b><br>
     <blockquote>A lot of improvements have been made to the fair scheduler in 0.21, 0.22 and trunk, but have not been ported back to the new 0.20.20X releases that are currently considered the stable branch of Hadoop.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3076">MAPREDUCE-3076</a>.
     Blocker bug reported by acmurthy and fixed by acmurthy (test)<br>
     <b>TestSleepJob fails </b><br>
     <blockquote>TestSleepJob fails, it was intended to be used in other tests for MAPREDUCE-2981.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3081">MAPREDUCE-3081</a>.
     Major bug reported by vitthal_gogate and fixed by  (contrib/vaidya)<br>
     <b>Change the name format for hadoop core and vaidya jar to be hadoop-{core/vaidya}-{version}.jar in vaidya.sh</b><br>
     <blockquote>                                              contrib/vaidya/bin/vaidya.sh script fixed to use appropriate jars and classpath <br><br>      <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-3112">MAPREDUCE-3112</a>.
     Major bug reported by eyang and fixed by eyang (contrib/streaming)<br>
     <b>Calling hadoop cli inside mapreduce job leads to errors</b><br>
     <blockquote>                    Removed inheritance of certain server environment variables (HADOOP_OPTS and HADOOP_ROOT_LOGGER) in task attempt process.&lt;br/&gt;<br><br><br></blockquote></li>

</ul>


<h2>Changes since Hadoop 0.20.203.0</h2>

<ul>
<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2846">MAPREDUCE-2846</a>.
     Blocker bug reported by aw and fixed by owen.omalley (task, task-controller, tasktracker)<br>
     <b>a small % of all tasks fail with DefaultTaskController</b><br>
     <blockquote>Fixed a race condition in writing the log index file that caused tasks to &apos;fail&apos;.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2804">MAPREDUCE-2804</a>.
     Blocker bug reported by aw and fixed by owen.omalley <br>
     <b>&quot;Creation of symlink to attempt log dir failed.&quot; message is not useful</b><br>
     <blockquote>Removed duplicate chmods of job log dir that were vulnerable to race conditions between tasks. Also improved the messages when the symlinks failed to be created.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2651">MAPREDUCE-2651</a>.
     Major bug reported by bharathm and fixed by bharathm (task-controller)<br>
     <b>Race condition in Linux Task Controller for job log directory creation</b><br>
     <blockquote>There is a rare race condition in linux task controller when concurrent task processes tries to create job log directory at the same time. </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2621">MAPREDUCE-2621</a>.
     Minor bug reported by sherri_chen and fixed by sherri_chen <br>
     <b>TestCapacityScheduler fails with &quot;Queue &quot;q1&quot; does not exist&quot;</b><br>
     <blockquote>{quote}<br>Error Message<br><br>Queue &quot;q1&quot; does not exist<br><br>Stacktrace<br><br>java.io.IOException: Queue &quot;q1&quot; does not exist<br>	at org.apache.hadoop.mapred.JobInProgress.&lt;init&gt;(JobInProgress.java:354)<br>	at org.apache.hadoop.mapred.TestCapacityScheduler$FakeJobInProgress.&lt;init&gt;(TestCapacityScheduler.java:172)<br>	at org.apache.hadoop.mapred.TestCapacityScheduler.submitJob(TestCapacityScheduler.java:794)<br>	at org.apache.hadoop.mapred.TestCapacityScheduler.submitJob(TestCapacityScheduler.java:818)<br>	at org.apache.hadoop.mapred.TestCapacityScheduler.submitJobAndInit(TestCapacityScheduler.java:825)<br>	at org.apache.hadoop.mapred.TestCapacityScheduler.testMultiTaskAssignmentInMultipleQueues(TestCapacityScheduler.java:1109)<br>{quote}<br><br>When queue name is invalid, an exception is thrown now. <br><br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2558">MAPREDUCE-2558</a>.
     Major new feature reported by naisbitt and fixed by naisbitt (jobtracker)<br>
     <b>Add queue-level metrics 0.20-security branch</b><br>
     <blockquote>We would like to record and present the jobtracker metrics on a per-queue basis.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2555">MAPREDUCE-2555</a>.
     Minor bug reported by tgraves and fixed by tgraves (tasktracker)<br>
     <b>JvmInvalidate errors in the gridmix TT logs</b><br>
     <blockquote>Observing a  lot of jvmValidate exceptions in TT logs for grid mix run<br><br><br><br>************************<br>2011-04-28 02:00:37,578 INFO org.apache.hadoop.ipc.Server: IPC Server handler 7 on 46121, call<br>statusUpdate(attempt_201104270735_5993_m_003305_0, org.apache.hadoop.mapred.MapTaskStatus@1840a9c,<br>org.apache.hadoop.mapred.JvmContext@1d4ab6b) from 127.0.0.1:50864: error: java.io.IOException: JvmValidate Failed.<br>Ignoring request from task: attempt_201104270735_5993_m_003305_0, with JvmId:<br>jvm_201104270735_5993_m_103399012gsbl20430: java.io.IOException: JvmValidate Failed. Ignoring request from task:<br>attempt_201104270735_5993_m_003305_0, with JvmId: jvm_201104270735_5993_m_103399012gsbl20430: --<br>      at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1386)<br>      at java.security.AccessController.doPrivileged(Native Method)<br>      at javax.security.auth.Subject.doAs(Subject.java:396)<br>      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)<br>      at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1384)<br><br><br>*********************<br><br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2529">MAPREDUCE-2529</a>.
     Major bug reported by tgraves and fixed by tgraves (tasktracker)<br>
     <b>Recognize Jetty bug 1342 and handle it</b><br>
     <blockquote>Added 2 new config parameters:<br><br><br><br>mapreduce.reduce.shuffle.catch.exception.stack.regex<br><br>mapreduce.reduce.shuffle.catch.exception.message.regex</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2524">MAPREDUCE-2524</a>.
     Minor improvement reported by tgraves and fixed by tgraves (tasktracker)<br>
     <b>Backport trunk heuristics for failing maps when we get fetch failures retrieving map output during shuffle</b><br>
     <blockquote>Added a new configuration option: mapreduce.reduce.shuffle.maxfetchfailures, and removed a no longer used option: mapred.reduce.copy.backoff.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2514">MAPREDUCE-2514</a>.
     Trivial bug reported by jeagles and fixed by jeagles (tasktracker)<br>
     <b>ReinitTrackerAction class name misspelled RenitTrackerAction in task tracker log</b><br>
     <blockquote></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2495">MAPREDUCE-2495</a>.
     Minor improvement reported by revans2 and fixed by revans2 (distributed-cache)<br>
     <b>The distributed cache cleanup thread has no monitoring to check to see if it has died for some reason</b><br>
     <blockquote>The cleanup thread in the distributed cache handles IOExceptions and the like correctly, but just to be a bit more defensive it would be good to monitor the thread, and check that it is still alive regularly, so that the distributed cache does not fill up the entire disk on the node. </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2490">MAPREDUCE-2490</a>.
     Trivial improvement reported by jeagles and fixed by jeagles (jobtracker)<br>
     <b>Log blacklist debug count</b><br>
     <blockquote>Gain some insight into blacklist increments/decrements by enhancing the debug logging</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2479">MAPREDUCE-2479</a>.
     Major improvement reported by revans2 and fixed by revans2 (tasktracker)<br>
     <b>Backport MAPREDUCE-1568 to hadoop security branch</b><br>
     <blockquote>Added mapreduce.tasktracker.distributedcache.checkperiod to the task tracker that defined the period to wait while cleaning up the distributed cache.  The default is 1 min.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2456">MAPREDUCE-2456</a>.
     Trivial improvement reported by naisbitt and fixed by naisbitt (jobtracker)<br>
     <b>Show the reducer taskid and map/reduce tasktrackers for &quot;Failed fetch notification #_ for task attempt...&quot; log messages</b><br>
     <blockquote>This jira is to provide more useful log information for debugging the &quot;Too many fetch-failures&quot; error.<br><br>Looking at the JobTracker node, we see messages like this:<br>&quot;2010-12-14 00:00:06,911 INFO org.apache.hadoop.mapred.JobInProgress: Failed fetch notification #8 for task<br>attempt_201011300729_189729_m_007458_0&quot;.<br><br>I would be useful to see which reducer is reporting the error here.<br><br>So, I propose we add the following to these log messages:<br>  1. reduce task ID<br>  2. TaskTracker nodenames for both the mapper and the reducer<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2451">MAPREDUCE-2451</a>.
     Trivial bug reported by tgraves and fixed by tgraves (jobtracker)<br>
     <b>Log the reason string of healthcheck script</b><br>
     <blockquote>The information on why a specific TaskTracker got blacklisted is not stored anywhere. The jobtracker web ui will show the detailed reason string until the TT gets unblacklisted.  After that it is lost.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2447">MAPREDUCE-2447</a>.
     Minor bug reported by sseth and fixed by sseth <br>
     <b>Set JvmContext sooner for a task - MR2429</b><br>
     <blockquote>TaskTracker.validateJVM() is throwing NPE when setupWorkDir() throws IOException. This is because<br>taskFinal.setJvmContext() is not executed yet</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2443">MAPREDUCE-2443</a>.
     Minor bug reported by sseth and fixed by sseth (test)<br>
     <b>Fix FI build - broken after MR-2429</b><br>
     <blockquote>src/test/system/aop/org/apache/hadoop/mapred/TaskAspect.aj:72 [warning] advice defined in org.apache.hadoop.mapred.TaskAspect has not been applied [Xlint:adviceDidNotMatch]<br><br>After the fix in MR-2429, the call to ping in TaskAspect needs to be fixed.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2429">MAPREDUCE-2429</a>.
     Major bug reported by acmurthy and fixed by sseth (tasktracker)<br>
     <b>Check jvmid during task status report</b><br>
     <blockquote>Currently TT doens&apos;t check to ensure jvmid is relevant during communication with the Child via TaskUmbilicalProtocol.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2418">MAPREDUCE-2418</a>.
     Minor bug reported by sseth and fixed by sseth <br>
     <b>Errors not shown in the JobHistory servlet (specifically Counter Limit Exceeded)</b><br>
     <blockquote>Job error details are not displayed in the JobHistory servlet. e.g. Errors like &apos;Counter limit exceeded for a job&apos;. <br>jobdetails.jsp has &apos;Failure Info&apos;, but this is missing in jobdetailshistory.jsp</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2415">MAPREDUCE-2415</a>.
     Major sub-task reported by bharathm and fixed by bharathm (task-controller, tasktracker)<br>
     <b>Distribute TaskTracker userlogs onto multiple disks</b><br>
     <blockquote>Currently, userlogs directory in TaskTracker is placed under hadoop.log.dir like &lt;hadoop.log.dir&gt;/userlogs. I am proposing to spread these userlogs onto multiple configured mapred.local.dirs to strengthen TaskTracker reliability w.r.t disk failures.  </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2413">MAPREDUCE-2413</a>.
     Major sub-task reported by bharathm and fixed by ravidotg (task-controller, tasktracker)<br>
     <b>TaskTracker should handle disk failures at both startup and runtime</b><br>
     <blockquote>At present, TaskTracker doesn&apos;t handle disk failures properly both at startup and runtime.<br><br>(1) Currently TaskTracker doesn&apos;t come up if any of the mapred-local-dirs is on a bad disk. TaskTracker should ignore that particular mapred-local-dir and start up and use only the remaining good mapred-local-dirs.<br>(2) If a disk goes bad while TaskTracker is running, currently TaskTracker doesn&apos;t do anything special. This results in either<br>   (a) TaskTracker continues to &quot;try to use that bad disk&quot; and this results in lots of task failures and possibly job failures(because of multiple TTs having bad disks) and eventually these TTs getting graylisted for all jobs. And this needs manual restart of TT with modified configuration of mapred-local-dirs avoiding the bad disk. OR<br>   (b) Health check script identifying the disk as bad and the TT gets blacklisted. And this also needs manual restart of TT with modified configuration of mapred-local-dirs avoiding the bad disk.<br><br>This JIRA is to make TaskTracker more fault-tolerant to disk failures solving (1) and (2). i.e. TT should start even if at least one of the mapred-local-dirs is on a good disk and TT should adjust its in-memory list of mapred-local-dirs and avoid using bad mapred-local-dirs.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2411">MAPREDUCE-2411</a>.
     Minor bug reported by dking and fixed by dking <br>
     <b>When you submit a job to a queue with no ACLs you get an inscrutible NPE</b><br>
     <blockquote>With this patch we&apos;ll check for that, and print a message in the logs.  Then at submission time you find out about it.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2409">MAPREDUCE-2409</a>.
     Major bug reported by sseth and fixed by sseth (distributed-cache)<br>
     <b>Distributed Cache does not differentiate between file /archive for files with the same path</b><br>
     <blockquote>If a &apos;global&apos; file is specified as a &apos;file&apos; by one job - subsequent jobs cannot override this source file to be an &apos;archive&apos; (until the TT cleans up it&apos;s cache or a TT restart).<br>The other way around as well -&gt; &apos;archive&apos; to &apos;file&apos;<br><br>In case of an accidental submission using the wrong type - some of the tasks for the second job will end up seeing the source file as an archive, others as a file.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2366">MAPREDUCE-2366</a>.
     Major bug reported by owen.omalley and fixed by dking (tasktracker)<br>
     <b>TaskTracker can&apos;t retrieve stdout and stderr from web UI</b><br>
     <blockquote>Problem where the task browser UI can&apos;t retrieve the stdxxx printouts of streaming jobs that abend in the unix code, in the common case where the containing job doesn&apos;t reuse JVM&apos;s.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2364">MAPREDUCE-2364</a>.
     Major bug reported by owen.omalley and fixed by devaraj (tasktracker)<br>
     <b>Shouldn&apos;t hold lock on rjob while localizing resources.</b><br>
     <blockquote>There is a deadlock while localizing resources on the TaskTracker.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2362">MAPREDUCE-2362</a>.
     Major bug reported by owen.omalley and fixed by roelofs (test)<br>
     <b>Unit test failures: TestBadRecords and TestTaskTrackerMemoryManager</b><br>
     <blockquote>Fix unit-test failures: TestBadRecords (NPE due to rearranged MapTask code) and TestTaskTrackerMemoryManager (need hostname in output-string pattern).</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2360">MAPREDUCE-2360</a>.
     Major bug reported by owen.omalley and fixed by  (client)<br>
     <b>Pig fails when using non-default FileSystem</b><br>
     <blockquote>The job client strips the file system from the user&apos;s job jar, which causes breakage when it isn&apos;t the default file system.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2359">MAPREDUCE-2359</a>.
     Major bug reported by owen.omalley and fixed by ramach <br>
     <b>Distributed cache doesn&apos;t use non-default FileSystems correctly</b><br>
     <blockquote>We are passing fs.deafult.name as viewfs:/// in core site.xml on oozie server.<br>We have default name node in configuration also viewfs:///<br><br>We are using hdfs://path in our path for application.<br>Its giving following error:<br><br>IllegalArgumentException: Wrong FS:<br>hdfs://nn/user/strat_ci/oozie-oozi/0000002-110217014830452-oozie-oozi-W/hadoop1--map-reduce/map-reduce-launcher.jar,<br>expected: viewfs:/</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2358">MAPREDUCE-2358</a>.
     Major bug reported by owen.omalley and fixed by ramach <br>
     <b>MapReduce assumes HDFS as the default filesystem</b><br>
     <blockquote>Mapred assumes hdfs as the default fs even when defined otherwise.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2357">MAPREDUCE-2357</a>.
     Major bug reported by owen.omalley and fixed by vicaya (task)<br>
     <b>When extending inputsplit (non-FileSplit), all exceptions are ignored</b><br>
     <blockquote>if you&apos;re using a custom RecordReader/InputFormat setup and using an<br>InputSplit that does NOT extend FileSplit, then any exceptions you throw in your RecordReader.nextKeyValue() function<br>are silently ignored.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2356">MAPREDUCE-2356</a>.
     Major bug reported by owen.omalley and fixed by vicaya <br>
     <b>A task succeeded even though there were errors on all attempts.</b><br>
     <blockquote>From Luke Lu:<br><br>Here is a summary of why the failed map task was considered &quot;successful&quot; (Thanks to Mahadev, Arun and Devaraj<br>for insightful discussions).<br><br>1. The map task was hanging BEFORE being initialized (probably in localization, but it doesn&apos;t matter in this case).<br>Its state is UNASSIGNED.<br><br>2. The jt decided to kill it due to timeout and scheduled a cleanup task on the same node.<br><br>3. The cleanup task has the same attempt id (by design.) but runs in a different JVM. Its initial state is<br>FAILED_UNCLEAN.<br><br>4. The JVM of the original attempt is getting killed, while proceeding to setupWorkDir and throwed an<br>IllegalStateException while FileSystem.getLocal, which causes taskFinal.taskCleanup being called in Child, and<br>triggered the NPE due to the task is not yet initialized (committer is null). Before the NPE, however it sent a<br>statusUpdate to TT, and in tip.reportProgress, changed the task state (currently FAILED_UNCLEAN) to UNASSIGNED.<br><br>5. The cleanup attempt succeeded and report done to TT. In tip.reportDone, the isCleanup() check returned false due to<br>the UNASSIGNED state and set the task state as SUCCEEDED.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-517">MAPREDUCE-517</a>.
     Critical bug reported by acmurthy and fixed by acmurthy <br>
     <b>The capacity-scheduler should assign multiple tasks per heartbeat</b><br>
     <blockquote>HADOOP-3136 changed the default o.a.h.mapred.JobQueueTaskScheduler to assign multiple tasks per TaskTracker heartbeat, the capacity-scheduler should do the same.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-118">MAPREDUCE-118</a>.
     Blocker bug reported by amar_kamat and fixed by amareshwari (client)<br>
     <b>Job.getJobID() will always return null</b><br>
     <blockquote>JobContext is used for a read-only view of job&apos;s info. Hence all the readonly fields in JobContext are set in the constructor. Job extends JobContext. When a Job is created, jobid is not known and hence there is no way to set JobID once Job is created. JobID is obtained only when the JobClient queries the jobTracker for a job-id., which happens later i.e upon job submission.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2218">HDFS-2218</a>.
     Blocker test reported by mattf and fixed by mattf (contrib/hdfsproxy, test)<br>
     <b>Disable TestHdfsProxy.testHdfsProxyInterface in automated test suite for 0.20-security-204 release</b><br>
     <blockquote>Test case TestHdfsProxy.testHdfsProxyInterface has been temporarily disabled for this release, due to failure in the Hudson automated test environment.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2057">HDFS-2057</a>.
     Major bug reported by bharathm and fixed by bharathm (data-node)<br>
     <b>Wait time to terminate the threads causing unit tests to take longer time</b><br>
     <blockquote>As a part of datanode process hang, this part of code was introduced in 0.20.204 to clean up all the waiting threads.<br><br>-      try {<br>-          readPool.awaitTermination(10, TimeUnit.SECONDS);<br>-      } catch (InterruptedException e) {<br>-       LOG.info(&quot;Exception occured in doStop:&quot; + e.getMessage());<br>-      }<br>-      readPool.shutdownNow();<br><br>This was clearly meant for production, but all the unit tests uses minidfscluster and minimrcluster for shutdown which waits on this part of the code. Due to this, we saw increase in unit test run times. So removing this code. <br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2044">HDFS-2044</a>.
     Major test reported by mattf and fixed by mattf (test)<br>
     <b>TestQueueProcessingStatistics failing automatic test due to timing issues</b><br>
     <blockquote>The test makes assumptions about timing issues that hold true in workstation environments but not in Hudson auto-test.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-2023">HDFS-2023</a>.
     Major bug reported by bharathm and fixed by bharathm (data-node)<br>
     <b>Backport of NPE for File.list and File.listFiles</b><br>
     <blockquote>Since we have multiple Jira&apos;s in trunk for common and hdfs, I am creating another jira for this issue. <br><br>This patch addresses the following:<br><br>1. Provides FileUtil API for list and listFiles which throws IOException for null cases. <br>2. Replaces most of the code where JDK file API with FileUtil API. </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1878">HDFS-1878</a>.
     Minor bug reported by mattf and fixed by mattf (name-node)<br>
     <b>TestHDFSServerPorts unit test failure - race condition in FSNamesystem.close() causes NullPointerException without serious consequence</b><br>
     <blockquote>In 20.204, TestHDFSServerPorts was observed to intermittently throw a NullPointerException.  This only happens when FSNamesystem.close() is called, which means system termination for the Namenode, so this is not a serious bug for .204.  TestHDFSServerPorts is more likely than normal execution to stimulate the race, because it runs two Namenodes in the same JVM, causing more interleaving and more potential to see a race condition.<br><br>The race is in FSNamesystem.close(), line 566, we have:<br>      if (replthread != null) replthread.interrupt();<br>      if (replmon != null) replmon = null;<br><br>Since the interrupted replthread is not waited on, there is a potential race condition with replmon being nulled before replthread is dead, but replthread references replmon in computeDatanodeWork() where the NullPointerException occurs.<br><br>The solution is either to wait on replthread or just don&apos;t null replmon.  The latter is preferred, since none of the sibling Namenode processing threads are waited on in close().<br><br>I&apos;ll attach a patch for .205.<br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1822">HDFS-1822</a>.
     Blocker bug reported by sureshms and fixed by sureshms (name-node)<br>
     <b>Editlog opcodes overlap between 20 security and later releases</b><br>
     <blockquote>Same opcode are used for different operations between 0.20.security, 0.22 and 0.23. This results in failure to load editlogs on later release, especially during upgrades.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1773">HDFS-1773</a>.
     Minor improvement reported by tanping and fixed by tanping (name-node)<br>
     <b>Remove a datanode from cluster if include list is not empty and this datanode is removed from both include and exclude lists</b><br>
     <blockquote>Our service engineering team who operates the clusters on a daily basis founds it is confusing that after a data node is decommissioned, there is no way to make the cluster forget about this data node and it always remains in the dead node list.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1767">HDFS-1767</a>.
     Major sub-task reported by mattf and fixed by mattf (data-node)<br>
     <b>Namenode should ignore non-initial block reports from datanodes when in safemode during startup</b><br>
     <blockquote>Consider a large cluster that takes 40 minutes to start up.  The datanodes compete to register and send their Initial Block Reports (IBRs) as fast as they can after startup (subject to a small sub-two-minute random delay, which isn&apos;t relevant to this discussion).  <br><br>As each datanode succeeds in sending its IBR, it schedules the starting time for its regular cycle of reports, every hour (or other configured value of dfs.blockreport.intervalMsec). In order to spread the reports evenly across the block report interval, each datanode picks a random fraction of that interval, for the starting point of its regular report cycle.  For example, if a particular datanode ends up randomly selecting 18 minutes after the hour, then that datanode will send a Block Report at 18 minutes after the hour every hour as long as it remains up.  Other datanodes will start their cycles at other randomly selected times.  This code is in DataNode.blockReport() and DataNode.scheduleBlockReport().<br><br>The &quot;second Block Report&quot; (2BR), is the start of these hourly reports.  The problem is that some of these 2BRs get scheduled sooner rather than later, and actually occur within the startup period.  For example, if the cluster takes 40 minutes (2/3 of an hour) to start up, then out of the datanodes that succeed in sending their IBRs during the first 10 minutes, between 1/2 and 2/3 of them will send their 2BR before the 40-minute startup time has completed!<br><br>2BRs sent within the startup time actually compete with the remaining IBRs, and thereby slow down the overall startup process.  This can be seen in the following data, which shows the startup process for a 3700-node cluster that took about 17 minutes to finish startup:<br><br>{noformat}<br>      time    starts  sum   regs  sum   IBR  sum  2nd_BR sum total_BRs/min<br>0   1299799498  3042  3042  1969  1969  151   151          0  151<br>1   1299799558   665  3707  1470  3439  248   399          0  248<br>2   1299799618        3707   224  3663  270   669          0  270<br>3   1299799678        3707    14  3677  261   930    3     3  264<br>4   1299799738        3707    23  3700  288  1218    1     4  289<br>5   1299799798        3707     7  3707  258  1476    3     7  261<br>6   1299799858        3707        3707  317  1793    4    11  321<br>7   1299799918        3707        3707  292  2085    6    17  298<br>8   1299799978        3707        3707  292  2377    8    25  300<br>9   1299800038        3707        3707  272  2649         25  272<br>10  1299800098        3707        3707  280  2929   15    40  295<br>11  1299800158        3707        3707  223  3152   14    54  237<br>12  1299800218        3707        3707  143  3295         54  143<br>13  1299800278        3707        3707  141  3436   20    74  161<br>14  1299800338        3707        3707  195  3631   78   152  273<br>15  1299800398        3707        3707   51  3682  209   361  260<br>16  1299800458        3707        3707   25  3707  369   730  394<br>17  1299800518        3707        3707       3707  166   896  166<br>18  1299800578        3707        3707       3707   72   968   72<br>19  1299800638        3707        3707       3707   67  1035   67<br>20  1299800698        3707        3707       3707   75  1110   75<br>21  1299800758        3707        3707       3707   71  1181   71<br>22  1299800818        3707        3707       3707   67  1248   67<br>23  1299800878        3707        3707       3707   62  1310   62<br>24  1299800938        3707        3707       3707   56  1366   56<br>25  1299800998        3707        3707       3707   60  1426   60<br>{noformat}<br><br>This data was harvested from the startup logs of all the datanodes, and correlated into one-minute buckets.  Each row of the table represents the progress during one elapsed minute of clock time.  It seems that every cluster startup is different, but this one showed the effect fairly well.<br><br>The &quot;starts&quot; column shows that all the nodes started up within the first 2 minutes, and the &quot;regs&quot; column shows that all succeeded in registering by minute 6.  The IBR column shows a sustained rate of Initial Block Report processing of 250-300/minute for the first 10 minutes.<br><br>The question is why, during minutes 11 through 16, the rate of IBR processing slowed down.  Why didn&apos;t the startup just finish?  In the &quot;2nd_BR&quot; column, we see the rate of 2BRs ramping up as more datanodes complete their IBRs.  As the rate increases, they become more effective at competing with the IBRs, and slow down the IBR processing even more.  After the IBRs finally finish in minute 16, the rate of 2BRs settles down to a steady ~60-70/minute.<br><br>In order to decrease competition for locks and other resources, to speed up IBR processing during startup, we propose to delay 2BRs until later into the cycle.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1758">HDFS-1758</a>.
     Minor bug reported by tanping and fixed by tanping (tools)<br>
     <b>Web UI JSP pages thread safety issue</b><br>
     <blockquote>The set of JSP pages that web UI uses are not thread safe.  We have observed some problems when requesting Live/Dead/Decommissioning pages from the web UI, incorrect page is displayed.  To be more specific, requesting Dead node list page, sometimes, Live node page is returned.  Requesting decommissioning page, sometimes, dead page is returned.<br><br>The root cause of this problem is that JSP page is not thread safe by default.  When multiple requests come in,  each request is assigned to a different thread, multiple threads access the same instance of the servlet class resulted from a JSP page.  A class variable is shared by multiple threads.  The JSP code in 20 branche, for example, dfsnodelist.jsp has<br>{code}<br>&lt;!%<br>  int rowNum = 0;<br>  int colNum = 0;<br>  String sorterField = null;<br>  String sorterOrder = null;<br>  String whatNodes = &quot;LIVE&quot;;<br>  ...<br>%&gt;<br>{code}<br><br>declared as  class variables.  ( These set of variables are declared within &lt;%! code %&gt; directives which made them class members. )  Multiple threads share the same set of class member variables, one request would step on anther&apos;s toe. <br><br>However, due to the JSP code refactor, HADOOP-5857, all of these class member variables are moved to become function local variables.  So this bug does not appear in Apache trunk.  Hence, we have proposed to take a simple fix for this bug on 20 branch alone, to be more specific, branch-0.20-security.<br><br>The simple fix is to add jsp ThreadSafe=&quot;false&quot; directive into the related JSP pages, dfshealth.jsp and dfsnodelist.jsp to make them thread safe, i.e. only on request is processed at each time. <br><br>We did evaluate the thread safety issue for other JSP pages on trunk, we noticed a potential problem is that when we retrieving some statistics from namenode, for example, we make the call to <br>{code}<br>NamenodeJspHelper.getInodeLimitText(fsn);<br>{code}<br>in dfshealth.jsp, which eventuality is <br><br>{code}<br>  static String getInodeLimitText(FSNamesystem fsn) {<br>    long inodes = fsn.dir.totalInodes();<br>    long blocks = fsn.getBlocksTotal();<br>    long maxobjects = fsn.getMaxObjects();<br>    ....<br>{code}<br><br>some of the function calls are already guarded by readwritelock, e.g. dir.totalInodes, but others are not.  As a result of this, the web ui results are not 100% thread safe.  But after evaluating the prons and cons of adding a giant lock into the JSP pages, we decided not to issue FSNamesystem ReadWrite locks into JSPs.<br><br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1750">HDFS-1750</a>.
     Major bug reported by szetszwo and fixed by szetszwo <br>
     <b>fs -ls hftp://file not working</b><br>
     <blockquote>{noformat}<br>hadoop dfs -touchz /tmp/file1 # create file. OK<br>hadoop dfs -ls /tmp/file1  # OK<br>hadoop dfs -ls hftp://namenode:50070/tmp/file1 # FAILED: not seeing the file<br>{noformat}</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1692">HDFS-1692</a>.
     Major bug reported by bharathm and fixed by bharathm (data-node)<br>
     <b>In secure mode, Datanode process doesn&apos;t exit when disks fail.</b><br>
     <blockquote>In secure mode, when disks fail more than volumes tolerated, datanode process doesn&apos;t exit properly and it just hangs even though shutdown method is called. <br><br></blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1592">HDFS-1592</a>.
     Major bug reported by bharathm and fixed by bharathm <br>
     <b>Datanode startup doesn&apos;t honor volumes.tolerated </b><br>
     <blockquote>Datanode startup doesn&apos;t honor volumes.tolerated for hadoop 20 version.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1541">HDFS-1541</a>.
     Major sub-task reported by hairong and fixed by hairong (name-node)<br>
     <b>Not marking datanodes dead When namenode in safemode</b><br>
     <blockquote>In a big cluster, when namenode starts up,  it takes a long time for namenode to process block reports from all datanodes. Because heartbeats processing get delayed, some datanodes are erroneously marked as dead, then later on they have to register again, thus wasting time.<br><br>It would speed up starting time if the checking of dead nodes is disabled when namenode in safemode.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1445">HDFS-1445</a>.
     Major sub-task reported by mattf and fixed by mattf (data-node)<br>
     <b>Batch the calls in DataStorage to FileUtil.createHardLink(), so we call it once per directory instead of once per file</b><br>
     <blockquote>Batch hardlinking during &quot;upgrade&quot; snapshots, cutting time from aprx 8 minutes per volume to aprx 8 seconds.  Validated in both Linux and Windows.  Depends on prior integration with patch for HADOOP-7133.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1377">HDFS-1377</a>.
     Blocker bug reported by eli and fixed by eli (name-node)<br>
     <b>Quota bug for partial blocks allows quotas to be violated </b><br>
     <blockquote>There&apos;s a bug in the quota code that causes them not to be respected when a file is not an exact multiple of the block size. Here&apos;s an example:<br><br>{code}<br>$ hadoop fs -mkdir /test<br>$ hadoop dfsadmin -setSpaceQuota 384M /test<br>$ ls dir/ | wc -l   # dir contains 101 files<br>101<br>$ du -ms dir        # each is 3mb<br>304	dir<br>$ hadoop fs -put dir /test<br>$ hadoop fs -count -q /test<br>        none             inf       402653184      -550502400            2          101          317718528 hdfs://haus01.sf.cloudera.com:10020/test<br>$ hadoop fs -stat &quot;%o %r&quot; /test/dir/f30<br>134217728 3    # three 128mb blocks<br>{code}<br><br>INodeDirectoryWithQuota caches the number of bytes consumed by it&apos;s children in {{diskspace}}. The quota adjustment code has a bug that causes {{diskspace}} to get updated incorrectly when a file is not an exact multiple of the block size (the value ends up being negative). <br><br>This causes the quota checking code to think that the files in the directory consumes less space than they actually do, so the verifyQuota does not throw a QuotaExceededException even when the directory is over quota. However the bug isn&apos;t visible to users because {{fs count -q}} reports the numbers generated by INode#getContentSummary which adds up the sizes of the blocks rather than use the cached INodeDirectoryWithQuota#diskspace value.<br><br>In FSDirectory#addBlock the disk space consumed is set conservatively to the full block size * the number of replicas:<br><br>{code}<br>updateCount(inodes, inodes.length-1, 0,<br>    fileNode.getPreferredBlockSize()*fileNode.getReplication(), true);<br>{code}<br><br>In FSNameSystem#addStoredBlock we adjust for this conservative estimate by subtracting out the difference between the conservative estimate and what the number of bytes actually stored was:<br><br>{code}<br>//Updated space consumed if required.<br>INodeFile file = (storedBlock != null) ? storedBlock.getINode() : null;<br>long diff = (file == null) ? 0 :<br>    (file.getPreferredBlockSize() - storedBlock.getNumBytes());<br><br>if (diff &gt; 0 &amp;&amp; file.isUnderConstruction() &amp;&amp;<br>    cursize &lt; storedBlock.getNumBytes()) {<br>...<br>    dir.updateSpaceConsumed(path, 0, -diff*file.getReplication());<br>{code}<br><br>We do the same in FSDirectory#replaceNode when completing the file, but at a file granularity (I believe the intent here is to correct for the cases when there&apos;s a failure replicating blocks and recovery). Since oldnode is under construction INodeFile#diskspaceConsumed will use the preferred block size  (vs of Block#getNumBytes used by newnode) so we will again subtract out the difference between the full block size and what the number of bytes actually stored was:<br><br>{code}<br>long dsOld = oldnode.diskspaceConsumed();<br>...<br>//check if disk space needs to be updated.<br>long dsNew = 0;<br>if (updateDiskspace &amp;&amp; (dsNew = newnode.diskspaceConsumed()) != dsOld) {<br>  try {<br>    updateSpaceConsumed(path, 0, dsNew-dsOld);<br>...<br>{code}<br><br>So in the above example we started with diskspace at 384mb (3 * 128mb) and then we subtract 375mb (to reflect only 9mb raw was actually used) twice so for each file the diskspace for the directory is - 366mb (384mb minus 2 * 375mb). Which is why the quota gets negative and yet we can still write more files.<br><br>So a directory with lots of single block files (if you have multiple blocks on the final partial block ends up subtracting from the diskspace used) ends up having a quota that&apos;s way off.<br><br>I think the fix is to in FSDirectory#replaceNode not have the diskspaceConsumed calculations differ when the old and new INode have the same blocks. I&apos;ll work on a patch which also adds a quota test for blocks that are not multiples of the block size and warns in INodeDirectory#computeContentSummary if the computed size does not reflect the cached value.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1258">HDFS-1258</a>.
     Blocker bug reported by atm and fixed by atm (name-node)<br>
     <b>Clearing namespace quota on &quot;/&quot; corrupts FS image</b><br>
     <blockquote>The HDFS root directory starts out with a default namespace quota of Integer.MAX_VALUE. If you clear this quota (using &quot;hadoop dfsadmin -clrQuota /&quot;), the fsimage gets corrupted immediately. Subsequent 2NN rolls will fail, and the NN will not come back up from a restart.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1189">HDFS-1189</a>.
     Major bug reported by xiaokang and fixed by johnvijoe (name-node)<br>
     <b>Quota counts missed between clear quota and set quota</b><br>
     <blockquote>HDFS Quota counts will be missed between a clear quota operation and a set quota.<br><br>When setting quota for a dir, the INodeDirectory will be replaced by INodeDirectoryWithQuota and dir.isQuotaSet() becomes true. When INodeDirectoryWithQuota  is newly created, quota counting will be performed. However, when clearing quota, the quota conf is set to -1 and dir.isQuotaSet() becomes false while INodeDirectoryWithQuota will NOT be replaced back to INodeDirectory.<br><br>FSDirectory.updateCount just update the quota count for inodes that isQuotaSet() is true. So after clear quota for a dir, its quota counts will not be updated and it&apos;s reasonable. But when re seting quota for this dir, quota counting will not be performed and some counts will be missed.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7475">HADOOP-7475</a>.
     Blocker bug reported by eyang and fixed by eyang <br>
     <b>hadoop-setup-single-node.sh is broken</b><br>
     <blockquote>When running hadoop-setup-single-node.sh, the system can not find the templates configuration directory:<br><br>{noformat}<br>cat: /usr/libexec/../templates/conf/core-site.xml: No such file or directory<br>cat: /usr/libexec/../templates/conf/hdfs-site.xml: No such file or directory<br>cat: /usr/libexec/../templates/conf/mapred-site.xml: No such file or directory<br>cat: /usr/libexec/../templates/conf/hadoop-env.sh: No such file or directory<br>chown: cannot access `hadoop-env.sh&apos;: No such file or directory<br>chmod: cannot access `hadoop-env.sh&apos;: No such file or directory<br>cp: cannot stat `*.xml&apos;: No such file or directory<br>cp: cannot stat `hadoop-env.sh&apos;: No such file or directory<br>{noformat}</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7398">HADOOP-7398</a>.
     Major new feature reported by owen.omalley and fixed by owen.omalley <br>
     <b>create a mechanism to suppress the HADOOP_HOME deprecated warning</b><br>
     <blockquote>Create a new mechanism to suppress the warning about HADOOP_HOME deprecation.<br><br>I&apos;ll create a HADOOP_HOME_WARN_SUPPRESS environment variable that suppresses the warning.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7373">HADOOP-7373</a>.
     Major bug reported by owen.omalley and fixed by owen.omalley <br>
     <b>Tarball deployment doesn&apos;t work with {start,stop}-{dfs,mapred}</b><br>
     <blockquote>The hadoop-config.sh overrides the variable &quot;bin&quot;, which makes the scripts use libexec for hadoop-daemon(s).</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7364">HADOOP-7364</a>.
     Major bug reported by tgraves and fixed by tgraves (test)<br>
     <b>TestMiniMRDFSCaching fails if test.build.dir is set to something other than build/test</b><br>
     <blockquote>TestMiniMRDFSCaching fails if test.build.dir is set to something other than build/test. </blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7356">HADOOP-7356</a>.
     Blocker bug reported by eyang and fixed by eyang <br>
     <b>RPM packages broke bin/hadoop script for hadoop 0.20.205</b><br>
     <blockquote>hadoop-config.sh has been moved to libexec for binary package, but developers prefers to have hadoop-config.sh in bin.  Hadoo shell scripts should be modified to support both scenarios.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7330">HADOOP-7330</a>.
     Major bug reported by vicaya and fixed by vicaya (metrics)<br>
     <b>The metrics source mbean implementation should return the attribute value instead of the object</b><br>
     <blockquote>The MetricsSourceAdapter#getAttribute in 0.20.203 is returning the attribute object instead of the value.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7324">HADOOP-7324</a>.
     Blocker bug reported by vicaya and fixed by priyomustafi (metrics)<br>
     <b>Ganglia plugins for metrics v2</b><br>
     <blockquote>Although, all metrics in metrics v2 are exposed via the standard JMX mechanisms, most users are using Ganglia to collect metrics.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7277">HADOOP-7277</a>.
     Minor improvement reported by naisbitt and fixed by naisbitt (build)<br>
     <b>Add Eclipse launch tasks for the 0.20-security branch</b><br>
     <blockquote>This is to add the eclipse launchers from HADOOP-5911 to the 0.20 security branch.<br><br>Eclipse has a notion of &quot;run configuration&quot;, which encapsulates what&apos;s needed to run or debug an application. I use this quite a bit to start various Hadoop daemons in debug mode, with breakpoints set, to inspect state and what not.<br><br>This is simply configuration, so no tests are provided. After running &quot;ant eclipse&quot; and refreshing your project, you should see entries in the Run Configurations and Debug Configurations for launching the various hadoop daemons from within eclipse. There&apos;s a template for testing a specific test, and also templates to run all the tests, the job tracker, and a task tracker. It&apos;s likely that some parameters need to be further tweaked to have the same behavior as &quot;ant test&quot;, but for most tests, this works.<br><br>This also requires a small change to build.xml for the eclipse classpath.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7274">HADOOP-7274</a>.
     Minor bug reported by jeagles and fixed by jeagles (util)<br>
     <b>CLONE - IOUtils.readFully and IOUtils.skipFully have typo in exception creation&apos;s message</b><br>
     <blockquote>Same fix as for HADOOP-7057 for the Hadoop security branch<br><br>{noformat}<br>        throw new IOException( &quot;Premeture EOF from inputStream&quot;);<br>{noformat}</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7248">HADOOP-7248</a>.
     Minor improvement reported by cos and fixed by tgraves (build)<br>
     <b>Have a way to automatically update Eclipse .classpath file when new libs are added to the classpath through Ivy for 0.20-* based sources</b><br>
     <blockquote>Backport HADOOP-6407 into 0.20 based source trees</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7232">HADOOP-7232</a>.
     Blocker bug reported by owen.omalley and fixed by owen.omalley (documentation)<br>
     <b>Fix javadoc warnings</b><br>
     <blockquote>The javadoc is currently generating 31 warnings.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7144">HADOOP-7144</a>.
     Major new feature reported by vicaya and fixed by revans2 <br>
     <b>Expose JMX with something like JMXProxyServlet </b><br>
     <blockquote>Much of the Hadoop metrics and status info is available via JMX, especially since 0.20.100, and 0.22+ (HDFS-1318, HADOOP-6728 etc.) For operations staff not familiar JMX setup, especially JMX with SSL and firewall tunnelling, the usage can be daunting. Using a JMXProxyServlet (a la Tomcat) to translate JMX attributes into JSON output would make a lot of non-Java admins happy.<br><br>We could probably use Tomcat&apos;s JMXProxyServlet code directly, if it&apos;s already output some standard format (JSON or XML etc.) The code is simple enough to port over and can probably integrate with the common HttpServer as one of the default servelet (maybe /jmx) for the pluggable security.</blockquote></li>

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6255">HADOOP-6255</a>.
     Major new feature reported by owen.omalley and fixed by eyang <br>
     <b>Create an rpm integration project</b><br>
     <blockquote>Added RPM/DEB packages to build system.</blockquote></li>
</ul>

<h2>Changes Since Hadoop 0.20.2</h2>

<ul>
<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7190">HADOOP-7190</a>. Add metrics v1 back for backwards compatibility. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2360">MAPREDUCE-2360</a>. Remove stripping of scheme, authority from submit dir in 
    support of viewfs. (cdouglas)
    
<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2359">MAPREDUCE-2359</a> Use correct file system to access distributed cache objects.
    (Krishna Ramachandran)
 
<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2361">MAPREDUCE-2361</a>. "Fix Distributed Cache is not adding files to class paths
    correctly" - Drop the host/scheme/fragment from URI (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2362">MAPREDUCE-2362</a>. Fix unit-test failures: TestBadRecords (NPE due to
    rearranged MapTask code) and TestTaskTrackerMemoryManager
    (need hostname in output-string pattern). (Greg Roelofs, Krishna 
    Ramachandran)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1729">HDFS-1729</a>. Add statistics logging for better visibility into
    startup time costs. (Matt Foley)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2363">MAPREDUCE-2363</a>.  When a queue is built without any access rights we 
    explain the problem.  (Richard King)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1563">MAPREDUCE-1563</a>. TaskDiagnosticInfo may be missed sometime. (Krishna 
    Ramachandran)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2364">MAPREDUCE-2364</a>. Don't hold the rjob lock while localizing resources. (ddas
    via omalley)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1598">HDFS-1598</a>. Directory listing on hftp:// does not show
    .*.crc files.  (szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2365">MAPREDUCE-2365</a>. New counters for FileInputFormat (BYTES_READ) and 
    FileOutputFormat (BYTES_WRITTEN). 
    New counter MAP_OUTPUT_MATERIALIZED_BYTES for compressed MapOutputSize.
    (Siddharth Seth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7040">HADOOP-7040</a>. Change DiskErrorException to IOException (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7104">HADOOP-7104</a>. Remove unnecessary DNS reverse lookups from RPC layer 
    (kzhang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2366">MAPREDUCE-2366</a>.  Fix a problem where the task browser UI can't retrieve the
    stdxxx printouts of streaming jobs that abend in the unix code, in
    the common case where the containing job doesn't reuse JVM's.
    (Richard King)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6977">HADOOP-6977</a>. Herriot daemon clients should vend statistics (cos)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6971">HADOOP-6971</a>. Clover build doesn't generate per-test coverage (cos)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6879">HADOOP-6879</a>. Provide SSH based (Jsch) remote execution API for system
    tests. (cos)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2355">MAPREDUCE-2355</a>. Add a configuration knob 
    mapreduce.tasktracker.outofband.heartbeat.damper that limits out of band
    heartbeats (acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2356">MAPREDUCE-2356</a>. Fix a race-condition that corrupted a task's state on the 
    JobTracker. (Luke Lu)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2357">MAPREDUCE-2357</a>. Always propagate IOExceptions that are thrown by 
    non-FileInputFormat. (Luke Lu)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7163">HADOOP-7163</a>. RPC handles SocketTimeOutException during SASL negotiation.
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2358">MAPREDUCE-2358</a>. MapReduce assumes the default FileSystem is HDFS.
    (Krishna Ramachandran)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1904">MAPREDUCE-1904</a>. Reducing locking contention in TaskTracker's 
    MapOutputServlet LocalDirAllocator. (Rajesh Balamohan via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1626">HDFS-1626</a>. Make BLOCK_INVALIDATE_LIMIT configurable. (szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1584">HDFS-1584</a>. Adds a check for whether relogin is needed to 
    getDelegationToken in HftpFileSystem. (Kan Zhang via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-7115">HADOOP-7115</a>. Reduces the number of calls to getpwuid_r and 
    getpwgid_r, by implementing a cache in NativeIO. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6882">HADOOP-6882</a>. An XSS security exploit in jetty-6.1.14. jetty upgraded to
    6.1.26. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2278">MAPREDUCE-2278</a>. Fixes a memory leak in the TaskTracker. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1353 redux">HDFS-1353 redux</a>. Modulate original 1353  to not bump RPC version.
    (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2082">MAPREDUCE-2082</a> Race condition in writing the jobtoken password file when 
    launching pipes jobs (jitendra and ddas)
                
    <a href="https://issues.apache.org/jira/browse/HADOOP-6978">HADOOP-6978</a>. Fixes task log servlet vulnerabilities via symlinks. 
    (Todd Lipcon and Devaraj Das)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2178">MAPREDUCE-2178</a>. Write task initialization to avoid race 
    conditions leading to privilege escalation and resource leakage by 
    performing more actiions as the user. (Owen O'Malley, Devaraj Das, 
    Chris Douglas via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1364">HDFS-1364</a>. HFTP client should support relogin from keytab

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6907">HADOOP-6907</a>. Make RPC client to use per-proxy configuration.
    (Kan Zhang via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2055">MAPREDUCE-2055</a>. Fix JobTracker to decouple job retirement from copy of 
    job-history file to HDFS and enhance RetiredJobInfo to carry aggregated 
    job-counters to prevent a disk roundtrip on job-completion to fetch 
    counters for the JobClient. (Krishna Ramachandran via acmurthy)
                
    <a href="https://issues.apache.org/jira/browse/HDFS-1353">HDFS-1353</a>. Remove most of getBlockLocation optimization (jghoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2023">MAPREDUCE-2023</a>. TestDFSIO read test may not read specified bytes. (htang)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1340">HDFS-1340</a>. A null delegation token is appended to the url if security is 
    disabled when browsing filesystem.(boryas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1352">HDFS-1352</a>. Fix jsvc.location. (jghoman)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6860">HADOOP-6860</a>. 'compile-fault-inject' should never be called directly. (cos)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2005">MAPREDUCE-2005</a>. TestDelegationTokenRenewal fails (boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-2000">MAPREDUCE-2000</a>. Rumen is not able to extract counters for Job history logs
    from Hadoop 0.20. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1961">MAPREDUCE-1961</a>. ConcurrentModificationException when shutting down Gridmix.
    (htang)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6899">HADOOP-6899</a>. RawLocalFileSystem set working directory does
    not work for relative names. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-495">HDFS-495</a>. New clients should be able to take over files lease if the old 
    client died. (shv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6728">HADOOP-6728</a>. Re-design and overhaul of the Metrics framework. (Luke Lu via
    acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1966">MAPREDUCE-1966</a>. Change blacklisting of tasktrackers on task failures to be
    a simple graylist to fingerpoint bad tasktrackers. (Greg Roelofs via
    acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6864">HADOOP-6864</a>. Add ability to get netgroups (as returned by getent
    netgroup command) using native code (JNI) instead of forking. (Erik Steffl)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1318">HDFS-1318</a>. HDFS Namenode and Datanode WebUI information needs to be 
    accessible programmatically for scripts. (Tanping Wang via suresh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1315">HDFS-1315</a>. Add fsck event to audit log and remove other audit log events 
    corresponding to FSCK listStatus and open calls. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1941">MAPREDUCE-1941</a>. Provides access to JobHistory file (raw) with job user/acl 
    permission. (Srikanth Sundarrajan via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-291.">MAPREDUCE-291.</a> Optionally a separate daemon should serve JobHistory.
    (Srikanth Sundarrajan via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1936">MAPREDUCE-1936</a>. Make Gridmix3 more customizable (sync changes from trunk).
    (htang)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5981">HADOOP-5981</a>. Fix variable substitution during parsing of child environment
    variables. (Krishna Ramachandran via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-339.">MAPREDUCE-339.</a> Greedily schedule failed tasks to cause early job failure.
    (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1872">MAPREDUCE-1872</a>. Hardened CapacityScheduler to have comprehensive, coherent
    limits on tasks/jobs for jobs/users/queues. Also, added the ability to
    refresh queue definitions without the need to restart the JobTracker.
    (acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1161">HDFS-1161</a>. Make DN minimum valid volumes configurable. (shv)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-457">HDFS-457</a>. Reintroduce volume failure tolerance for DataNodes. (shv)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1307 Add start time, end time and total time taken for FSCK 
    to FSCK report">HDFS-1307 Add start time, end time and total time taken for FSCK 
    to FSCK report</a>. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1207">MAPREDUCE-1207</a>. Sanitize user environment of map/reduce tasks and allow 
    admins to set environment and java options. (Krishna Ramachandran via
    acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1298 - Add support in HDFS for new statistics added in FileSystem
    to track the file system operations (suresh)

<li> HDFS-1301">HDFS-1298 - Add support in HDFS for new statistics added in FileSystem
    to track the file system operations (suresh)

<li> HDFS-1301</a>. TestHDFSProxy need to use server side conf for ProxyUser  
    stuff.(boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6859">HADOOP-6859</a> - Introduce additional statistics to FileSystem to track 
    file system operations (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6818">HADOOP-6818</a>. Provides a JNI implementation of Unix Group resolution. The 
    config hadoop.security.group.mapping should be set to 
    org.apache.hadoop.security.JniBasedUnixGroupsMapping to enable this
    implementation. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1938">MAPREDUCE-1938</a>. Introduces a configuration for putting user classes before
    the system classes during job submission and in task launches. Two things
    need to be done in order to use this feature - 
    (1) mapreduce.user.classpath.first : this should be set to true in the 
    jobconf, and, (2) HADOOP_USER_CLASSPATH_FIRST : this is relevant for job 
    submissions done using bin/hadoop shell script. HADOOP_USER_CLASSPATH_FIRST
    should be defined in the environment with some non-empty value 
    (like "true"), and then bin/hadoop should be executed. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6669">HADOOP-6669</a>. Respect compression configuration when creating DefaultCodec
    compressors. (Koji Noguchi via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6855">HADOOP-6855</a>. Add support for netgroups, as returned by command
    getent netgroup. (Erik Steffl)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-599">HDFS-599</a>. Allow NameNode to have a seprate port for service requests from
    client requests. (Dmytro Molkov via hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-132">HDFS-132</a>. Fix namenode to not report files deleted metrics for deletions
    done while replaying edits during startup. (shv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1521">MAPREDUCE-1521</a>. Protection against incorrectly configured reduces
    (mahadev) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1936">MAPREDUCE-1936</a>. Make Gridmix3 more customizable. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-517.">MAPREDUCE-517.</a> Enhance the CapacityScheduler to assign multiple tasks
    per-heartbeat. (acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-323.">MAPREDUCE-323.</a> Re-factor layout of JobHistory files on HDFS to improve 
    operability. (Dick King via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1921">MAPREDUCE-1921</a>. Ensure exceptions during reading of input data in map
    tasks are augmented by information about actual input file which caused
    the exception. (Krishna Ramachandran via acmurthy)  

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1118">MAPREDUCE-1118</a>. Enhance the JobTracker web-ui to ensure tabular columns
    are sortable, also added a /scheduler servlet to CapacityScheduler for
    enhanced UI for queue information. (Krishna Ramachandran via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5913">HADOOP-5913</a>. Add support for starting/stopping queues. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6835">HADOOP-6835</a>. Add decode support for concatenated gzip files. (Greg Roelofs)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1158">HDFS-1158</a>. Revert <a href="https://issues.apache.org/jira/browse/HDFS-457">HDFS-457</a>. (shv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1699">MAPREDUCE-1699</a>. Ensure JobHistory isn't disabled for any reason. (Krishna
    Ramachandran via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1682">MAPREDUCE-1682</a>. Fix speculative execution to ensure tasks are not
    scheduled after job failure. (acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1914">MAPREDUCE-1914</a>. Ensure unique sub-directories for artifacts in the
    DistributedCache are cleaned up. (Dick King via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6713">HADOOP-6713</a>. Multiple RPC Reader Threads (Bharathm)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1250">HDFS-1250</a>. Namenode should reject block reports and block received
    requests from dead datanodes (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1863">MAPREDUCE-1863</a>. [Rumen] Null failedMapAttemptCDFs in job traces generated 
    by Rumen. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1309">MAPREDUCE-1309</a>. Rumen refactory. (htang)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1114">HDFS-1114</a>. Implement LightWeightGSet for BlocksMap in order to reduce
    NameNode memory footprint.  (szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-572.">MAPREDUCE-572.</a> Fixes DistributedCache.checkURIs to throw error if link is
    missing for uri in cache archives. (amareshwari)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-787.">MAPREDUCE-787.</a> Fix JobSubmitter to honor user given symlink in the path.
    (amareshwari)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6815">HADOOP-6815</a>. refreshSuperUserGroupsConfiguration should use 
    server side configuration for the refresh( boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1868">MAPREDUCE-1868</a>. Add a read and connection timeout to JobClient while
    pulling tasklogs. (Krishna Ramachandran via acmurthy)   

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1119">HDFS-1119</a>. Introduce a GSet interface to BlocksMap.  (szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1778">MAPREDUCE-1778</a>. Ensure failure to setup CompletedJobStatusStore is not
    silently ignored by the JobTracker. (Krishna Ramachandran via acmurthy)  

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1538">MAPREDUCE-1538</a>. Add a limit on the number of artifacts in the
    DistributedCache to ensure we cleanup aggressively. (Dick King via
    acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1850">MAPREDUCE-1850</a>. Add information about the host from which a job is
    submitted. (Krishna Ramachandran via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1110">HDFS-1110</a>. Reuses objects for commonly used file names in namenode to
    reduce the heap usage. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6810">HADOOP-6810</a>. Extract a subset of tests for smoke (DOA) validation. (cos)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6642">HADOOP-6642</a>. Remove debug stmt left from original patch. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6808">HADOOP-6808</a>. Add comments on how to setup File/Ganglia Context for
    kerberos metrics (Erik Steffl)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1061">HDFS-1061</a>.  INodeFile memory optimization. (bharathm)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1109">HDFS-1109</a>. HFTP supports filenames that contains the character "+".
    (Dmytro Molkov via dhruba, backported by szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1085">HDFS-1085</a>. Check file length and bytes read when reading a file through
    hftp in order to detect failure.  (szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1311">HDFS-1311</a>. Running tests with 'testcase' cause triple execution of the
    same test case (cos)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1150">HDFS-1150</a>.FIX.  Verify datanodes' identities to clients in secure clusters.
    Update to patch to improve handling of jsvc source in build.xml (jghoman)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6752">HADOOP-6752</a>. Remote cluster control functionality needs JavaDocs
    improvement. (Balaji Rajagopalan via cos)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1288">MAPREDUCE-1288</a>. Fixes TrackerDistributedCacheManager to take into account
    the owner of the localized file in the mapping from cache URIs to 
    CacheStatus objects. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1682">MAPREDUCE-1682</a>. Fix speculative execution to ensure tasks are not
    scheduled after job failure. (acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1914">MAPREDUCE-1914</a>. Ensure unique sub-directories for artifacts in the
    DistributedCache are cleaned up. (Dick King via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1538">MAPREDUCE-1538</a>. Add a limit on the number of artifacts in the
    DistributedCache to ensure we cleanup aggressively. (Dick King via
    acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1900">MAPREDUCE-1900</a>. Fixes a FS leak that i missed in the earlier patch.
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1900">MAPREDUCE-1900</a>. Makes JobTracker/TaskTracker close filesystems, created
    on behalf of users, when they are no longer needed. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6832">HADOOP-6832</a>. Add a static user plugin for web auth for external users.
    (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1007">HDFS-1007</a>. Fixes a bug in SecurityUtil.buildDTServiceName to do
    with handling of null hostname. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1007">HDFS-1007</a>. makes long running servers using hftp work. Also has some
    refactoring in the MR code to do with handling of delegation tokens. 
    (omalley & ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1178">HDFS-1178</a>. The NameNode servlets should not use RPC to connect to the
    NameNode. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1807">MAPREDUCE-1807</a>. Re-factor TestQueueManager. (Richard King via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1150">HDFS-1150</a>. Fixes the earlier patch to do logging in the right directory
    and also adds facility for monitoring processes (via -Dprocname in the
    command line). (Jakob Homan via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6781">HADOOP-6781</a>. security audit log shouldn't have exception in it. (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6776">HADOOP-6776</a>. Fixes the javadoc in UGI.createProxyUser. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1150">HDFS-1150</a>. building jsvc from source tar. source tar is also checked in.
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1150">HDFS-1150</a>. Bugfix in the hadoop shell script. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1153">HDFS-1153</a>. The navigation to /dfsnodelist.jsp with invalid input 
    parameters produces NPE and HTTP 500 error (rphulari)
    
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1664">MAPREDUCE-1664</a>. Bugfix to enable queue administrators of a queue to
    view job details of jobs submitted to that queue even though they
    are not part of acl-view-job. 

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1150">HDFS-1150</a>. Bugfix to add more knobs to secure datanode starter.

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1157">HDFS-1157</a>. Modifications introduced by <a href="https://issues.apache.org/jira/browse/HDFS-1150 are breaking aspect's
    bindings (cos)

<li> HDFS-1130">HDFS-1150 are breaking aspect's
    bindings (cos)

<li> HDFS-1130</a>. Adds a configuration dfs.cluster.administrators for 
    controlling access to the default servlets in hdfs. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6706">HADOOP-6706</a>.FIX. Relogin behavior for RPC clients could be improved 
    (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1150">HDFS-1150</a>. Verify datanodes' identities to clients in secure clusters.
    (jghoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1442">MAPREDUCE-1442</a>. Fixed regex in job-history related to parsing Counter
    values. (Luke Lu via acmurthy)  

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6760">HADOOP-6760</a>. WebServer shouldn't increase port number in case of negative
    port setting caused by Jetty's race. (cos)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1146">HDFS-1146</a>. Javadoc for getDelegationTokenSecretManager in FSNamesystem.
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6706">HADOOP-6706</a>. Fix on top of the earlier patch. Closes the connection
    on a SASL connection failure, and retries again with a new
    connection. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1716">MAPREDUCE-1716</a>. Fix on top of earlier patch for logs truncation a.k.a 
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1100">MAPREDUCE-1100</a>. Addresses log truncation issues when binary data is
    written to log files and adds a header to a truncated log file to
    inform users of the done trucation.

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1383">HDFS-1383</a>. Improve the error messages when using hftp://.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1744">MAPREDUCE-1744</a>. Fixed DistributedCache apis to take a user-supplied
    FileSystem to allow for better proxy behaviour for Oozie. (Richard King) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1733">MAPREDUCE-1733</a>. Authentication between pipes processes and java 
    counterparts. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1664">MAPREDUCE-1664</a>. Bugfix on top of the previous patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1136">HDFS-1136</a>. FileChecksumServlets.RedirectServlet doesn't carry forward 
    the delegation token (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6756">HADOOP-6756</a>. Change value of FS_DEFAULT_NAME_KEY from fs.defaultFS
    to fs.default.name which is a correct name for 0.20 (steffl)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6756">HADOOP-6756</a>. Document (javadoc comments) and cleanup configuration
    keys in CommonConfigurationKeys.java (steffl)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1759">MAPREDUCE-1759</a>. Exception message for unauthorized user doing killJob,
    killTask, setJobPriority needs to be improved. (gravi via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6715">HADOOP-6715</a>. AccessControlList.toString() returns empty string when
    we set acl to "*". (gravi via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6757">HADOOP-6757</a>. NullPointerException for hadoop clients launched from
    streaming tasks. (amarrk via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6631">HADOOP-6631</a>. FileUtil.fullyDelete() should continue to delete other files
    despite failure at any level. (vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1317">MAPREDUCE-1317</a>. NPE in setHostName in Rumen. (rksingh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1754">MAPREDUCE-1754</a>. Replace mapred.persmissions.supergroup with an acl : 
    mapreduce.cluster.administrators and <a href="https://issues.apache.org/jira/browse/HADOOP-6748">HADOOP-6748</a>.: Remove
    hadoop.cluster.administrators. Contributed by Amareshwari Sriramadasu.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6701">HADOOP-6701</a>.  Incorrect exit codes for "dfs -chown", "dfs -chgrp"
    (rphulari)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6640">HADOOP-6640</a>. FileSystem.get() does RPC retires within a static
    synchronized block. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1006">HDFS-1006</a>. Removes unnecessary logins from the previous patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6745">HADOOP-6745</a>. adding some java doc to Server.RpcMetrics, UGI (boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1707">MAPREDUCE-1707</a>. TaskRunner can get NPE in getting ugi from TaskTracker. 
    (vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1104">HDFS-1104</a>. Fsck triggers full GC on NameNode. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6332">HADOOP-6332</a>. Large-scale Automated Test Framework (sharad, Sreekanth
    Ramakrishnan, at all via cos)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6526">HADOOP-6526</a>. Additional fix for test context on top of existing one. (cos)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6710">HADOOP-6710</a>. Symbolic umask for file creation is not conformant with posix.
    (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6693">HADOOP-6693</a>. Added metrics to track kerberos login success and failure.
    (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1711">MAPREDUCE-1711</a>. Gridmix should provide an option to submit jobs to the same
    queues as specified in the trace. (rksing via htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1687">MAPREDUCE-1687</a>. Stress submission policy does not always stress the
    cluster. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1641">MAPREDUCE-1641</a>. Bug-fix to ensure command line options such as
    -files/-archives are checked for duplicate artifacts in the
    DistributedCache. (Amareshwari Sreeramadasu via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1641">MAPREDUCE-1641</a>. Fix DistributedCache to ensure same files cannot be put in
    both the archives and files sections. (Richard King via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6670">HADOOP-6670</a>. Fixes a testcase issue introduced by the earlier commit
    of the <a href="https://issues.apache.org/jira/browse/HADOOP-6670">HADOOP-6670</a> patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1718">MAPREDUCE-1718</a>. Fixes a problem to do with correctly constructing
    service name for the delegation token lookup in HftpFileSystem
    (borya via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6674">HADOOP-6674</a>. Fixes the earlier patch to handle pings correctly (ddas).

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1664">MAPREDUCE-1664</a>. Job Acls affect when Queue Acls are set. 
    (Ravi Gummadi via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6718">HADOOP-6718</a>. Fixes a problem to do with clients not closing RPC
    connections on a SASL failure. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1397">MAPREDUCE-1397</a>. NullPointerException observed during task failures.
    (Amareshwari Sriramadasu via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6670">HADOOP-6670</a>. Use the UserGroupInformation's Subject as the criteria for
    equals and hashCode. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6716">HADOOP-6716</a>. System won't start in non-secure mode when kerb5.conf 
   (edu.mit.kerberos on Mac) is not present. (boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1607">MAPREDUCE-1607</a>. Task controller may not set permissions for a 
    task cleanup attempt's log directory. (Amareshwari Sreeramadasu via 
    vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1533">MAPREDUCE-1533</a>. JobTracker performance enhancements. (Amar Kamat via 
    vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1701">MAPREDUCE-1701</a>.  AccessControlException while renewing a delegation token 
    in not correctly handled in the JobTracker. (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-481">HDFS-481</a>. Incremental patch to fix broken unit test in contrib/hdfsproxy

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6706">HADOOP-6706</a>. Fixes a bug in the earlier version of the same patch (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1096">HDFS-1096</a>. allow dfsadmin/mradmin refresh of superuser proxy group 
    mappings(boryas).

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1012">HDFS-1012</a>. Support for cluster specific path entries in ldap for hdfsproxy
    (Srikanth Sundarrajan via Nicholas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1011">HDFS-1011</a>. Improve Logging in HDFSProxy to include cluster name associated
    with the request (Srikanth Sundarrajan via Nicholas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1010">HDFS-1010</a>. Retrieve group information from UnixUserGroupInformation 
    instead of LdapEntry (Srikanth Sundarrajan via Nicholas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-481">HDFS-481</a>. Bug fix - hdfsproxy: Stack overflow + Race conditions
    (Srikanth Sundarrajan via Nicholas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1657">MAPREDUCE-1657</a>. After task logs directory is deleted, tasklog servlet
    displays wrong error message about job ACLs. (Ravi Gummadi via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1692">MAPREDUCE-1692</a>. Remove TestStreamedMerge from the streaming tests.
    (Amareshwari Sriramadasu and Sreekanth Ramakrishnan via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1081">HDFS-1081</a>. Performance regression in 
    DistributedFileSystem::getFileBlockLocations in secure systems (jhoman)
    
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1656">MAPREDUCE-1656</a>. JobStory should provide queue info. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1317">MAPREDUCE-1317</a>. Reducing memory consumption of rumen objects. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1317">MAPREDUCE-1317</a>. Reverting the patch since it caused build failures. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1683">MAPREDUCE-1683</a>. Fixed jobtracker web-ui to correctly display heap-usage.
    (acmurthy)
    
    <a href="https://issues.apache.org/jira/browse/HADOOP-6706">HADOOP-6706</a>. Fixes exception handling for saslConnect. The ideal
    solution is to the Refreshable interface but as Owen noted in 
    <a href="https://issues.apache.org/jira/browse/HADOOP-6656">HADOOP-6656</a>, it doesn't seem to work as expected. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1617">MAPREDUCE-1617</a>. TestBadRecords failed once in our test runs. (Amar
    Kamat via vinodkv).

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-587.">MAPREDUCE-587.</a> Stream test TestStreamingExitStatus fails with Out of
    Memory. (Amar Kamat via vinodkv).

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1096">HDFS-1096</a>. Reverting the patch since it caused build failures. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1317">MAPREDUCE-1317</a>. Reducing memory consumption of rumen objects. (htang)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1680">MAPREDUCE-1680</a>. Add a metric to track number of heartbeats processed by the
    JobTracker. (Richard King via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1683">MAPREDUCE-1683</a>.  Removes JNI calls to get jvm current/max heap usage in
    ClusterStatus by default. (acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6687">HADOOP-6687</a>.  user object in the subject in UGI should be reused in case 
    of a relogin. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5647">HADOOP-5647</a>. TestJobHistory fails if /tmp/_logs is not writable to. 
    Testcase should not depend on /tmp. (Ravi Gummadi via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-181.">MAPREDUCE-181.</a> Bug fix for Secure job submission. (Ravi Gummadi via 
    vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1635">MAPREDUCE-1635</a>. ResourceEstimator does not work after <a href="https://issues.apache.org/jira/browse/MAPREDUCE-842.">MAPREDUCE-842.</a> 
    (Amareshwari Sriramadasu via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1526">MAPREDUCE-1526</a>. Cache the job related information while submitting the 
    job. (rksingh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6674">HADOOP-6674</a>. Turn off SASL checksums for RPCs. (jitendra via omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5958">HADOOP-5958</a>. Replace fork of DF with library call. (cdouglas via omalley)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-999">HDFS-999</a>.  Secondary namenode should login using kerberos if security
    is configured. Bugfix to original patch. (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1594">MAPREDUCE-1594</a>. Support for SleepJobs in Gridmix (rksingh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1007">HDFS-1007</a>. Fix. ServiceName for delegation token for Hftp has hftp
    port and not RPC port. 
    
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1376">MAPREDUCE-1376</a>. Support for varied user submissions in Gridmix (rksingh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1080">HDFS-1080</a>.  SecondaryNameNode image transfer should use the defined 
    http address rather than local ip address (jhoman)
    
    <a href="https://issues.apache.org/jira/browse/HADOOP-6661">HADOOP-6661</a>. User document for UserGroupInformation.doAs for secure
    impersonation. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1624">MAPREDUCE-1624</a>. Documents the job credentials and associated details 
    to do with delegation tokens (ddas)
    <a href="https://issues.apache.org/jira/browse/HDFS-1036">HDFS-1036</a>. Documentation for fetchdt for forrest (boryas)
    <a href="https://issues.apache.org/jira/browse/HDFS-1039">HDFS-1039</a>. New patch on top of previous patch. Gets namenode address
    from conf. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6656">HADOOP-6656</a>. Renew Kerberos TGT when 80% of the renew lifetime has been
    used up. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6653">HADOOP-6653</a>. Protect against NPE in setupSaslConnection when real user is
    null. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6649">HADOOP-6649</a>. An error in the previous committed patch. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6652">HADOOP-6652</a>. ShellBasedUnixGroupsMapping shouldn't have a cache. 
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6649">HADOOP-6649</a>. login object in UGI should be inside the subject
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6637">HADOOP-6637</a>.  Benchmark overhead of RPC session establishment
    (shv via jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6648">HADOOP-6648</a>. Credentials must ignore null tokens that can be generated
    when using HFTP to talk to insecure clusters. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6632">HADOOP-6632</a>. Fix on JobTracker to reuse filesystem handles if possible.
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6647">HADOOP-6647</a>. balancer fails with "is not authorized for protocol 
    interface NamenodeProtocol" in secure environment (boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1612">MAPREDUCE-1612</a>. job conf file is not accessible from job history 
    web page. (Ravi Gummadi via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1611">MAPREDUCE-1611</a>. Refresh nodes and refresh queues doesnt work with 
    service authorization enabled. (Amar Kamat via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6644">HADOOP-6644</a>. util.Shell getGROUPS_FOR_USER_COMMAND method 
   name - should use common naming convention (boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1609">MAPREDUCE-1609</a>. Fixes a problem with localization of job log
    directories when tasktracker is re-initialized that can result
    in failed tasks. (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1610">MAPREDUCE-1610</a>. Update forrest documentation for directory
    structure of localized files. (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1532">MAPREDUCE-1532</a>. Fixes a javadoc and an exception message in JobInProgress
    when the authenticated user is different from the user in conf. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1417">MAPREDUCE-1417</a>. Update forrest documentation for private
    and public distributed cache files. (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6634">HADOOP-6634</a>. AccessControlList uses full-principal names to verify acls
    causing queue-acls to fail (vinodkv)
    
    <a href="https://issues.apache.org/jira/browse/HADOOP-6642">HADOOP-6642</a>. Fix javac, javadoc, findbugs warnings. (chrisdo via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1044">HDFS-1044</a>.  Cannot submit mapreduce job from secure client to 
    unsecure sever. (boryas)
    <a href="https://issues.apache.org/jira/browse/HADOOP-6638">HADOOP-6638</a>. try to relogin in a case of failed RPC connection 
    (expired tgt) only in case the subject is loginUser or  
    proxyUgi.realUser. (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6632">HADOOP-6632</a>. Support for using different Kerberos keys for different 
    instances of Hadoop services. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6526">HADOOP-6526</a>. Need mapping from long principal names to local OS 
    user names. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1604">MAPREDUCE-1604</a>. Update Forrest documentation for job authorization
    ACLs. (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1045">HDFS-1045</a>.  In secure clusters, re-login is necessary for https 
    clients before opening connections (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6603">HADOOP-6603</a>.  Addition to original patch to be explicit
    about new method not being for general use. (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1543">MAPREDUCE-1543</a>. Add audit log messages for job and queue
    access control checks. (Amar Kamat via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1606">MAPREDUCE-1606</a>. Fixed occassinal timeout in TestJobACL. (Ravi Gummadi via
    acmurthy)

<li><a href="https://issues.apache.org/jira/browse/HADOOP-6633">HADOOP-6633</a>. normalize property names for JT/NN kerberos principal 
    names in configuration. (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6613">HADOOP-6613</a>. Changes the RPC server so that version is checked first
    on an incoming connection. (Kan Zhang via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5592">HADOOP-5592</a>. Fix typo in Streaming doc in reference to GzipCodec.
    (Corinne Chandel via tomwhite)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-813.">MAPREDUCE-813.</a> Updates Streaming and M/R tutorial documents.
    (Corinne Chandel via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-927.">MAPREDUCE-927.</a> Cleanup of task-logs should happen in TaskTracker instead
    of the Child. (Amareshwari Sriramadasu via vinodkv)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1039">HDFS-1039</a>. Service should be set in the token in JspHelper.getUGI.
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1599">MAPREDUCE-1599</a>. MRBench reuses jobConf and credentials there in.
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1522">MAPREDUCE-1522</a>. FileInputFormat may use the default FileSystem for the
    input path. (Tsz Wo (Nicholas), SZE via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1036">HDFS-1036</a>. In DelegationTokenFetch pass Configuration object so 
    getDefaultUri will work correctly.

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1038">HDFS-1038</a>. In nn_browsedfscontent.jsp fetch delegation token only if 
    security is enabled. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1036">HDFS-1036</a>. in DelegationTokenFetch dfs.getURI returns no port (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6598">HADOOP-6598</a>. Verbose logging from the Group class (one more case)
    (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6627">HADOOP-6627</a>. Bad Connection to FS" message in FSShell should print 
    message from the exception (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1033">HDFS-1033</a>. In secure clusters, NN and SNN should verify that the remote 
    principal during image and edits transfer (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1005">HDFS-1005</a>. Fixes a bug to do with calling the cross-realm API in Fsck
    client. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1422">MAPREDUCE-1422</a>. Fix cleanup of localized job directory to work if files
    with non-deletable permissions are created within it.
    (Amar Kamat via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1007">HDFS-1007</a>. Fixes bugs to do with 20S cluster talking to 20 over 
    hftp (borya)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1566">MAPREDUCE-1566</a>. Fixes bugs in the earlier patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-992">HDFS-992</a>. A bug in backport for <a href="https://issues.apache.org/jira/browse/HDFS-992">HDFS-992</a>. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6598">HADOOP-6598</a>. Remove verbose logging from the Groups class. (borya)
    <a href="https://issues.apache.org/jira/browse/HADOOP-6620">HADOOP-6620</a>. NPE if renewer is passed as null in getDelegationToken.
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1023">HDFS-1023</a>. Second Update to original patch to fix username (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1435">MAPREDUCE-1435</a>. Add test cases to already committed patch for this
    jira, synchronizing changes with trunk. (yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6612">HADOOP-6612</a>. Protocols RefreshUserToGroupMappingsProtocol and 
    RefreshAuthorizationPolicyProtocol  authorization settings thru 
    KerberosInfo (boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1566">MAPREDUCE-1566</a>. Bugfix for tests on top of the earlier patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1566">MAPREDUCE-1566</a>. Mechanism to import tokens and secrets from a file in to
    the submitted job. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6603">HADOOP-6603</a>. Provide workaround for issue with Kerberos not
    resolving corss-realm principal. (kan via jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1023">HDFS-1023</a>. Update to original patch to fix username (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-814">HDFS-814</a>. Add an api to get the visible length of a 
    DFSDataInputStream. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1023">HDFS-1023</a>. Allow http server to start as regular user if https
    principal is not defined. (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1022">HDFS-1022</a>. Merge all three test specs files (common, hdfs, mapred)
    into one. (steffl)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-101">HDFS-101</a>. DFS write pipeline: DFSClient sometimes does not detect
    second datanode failure. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1015">HDFS-1015</a>. Intermittent failure in TestSecurityTokenEditLog. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1550">MAPREDUCE-1550</a>. A bugfix on top of what was committed earlier (ddas).

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1155">MAPREDUCE-1155</a>. DISABLING THE TestStreamingExitStatus temporarily. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1020">HDFS-1020</a>. Changes the check for renewer from short name to long name
    in the cancel/renew delegation token methods. (jitendra via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1019">HDFS-1019</a>. Fixes values of delegation token parameters in
    hdfs-default.xml. (jitendra via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1430">MAPREDUCE-1430</a>. Fixes a backport issue with the earlier patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1559">MAPREDUCE-1559</a>. Fixes a problem in DelegationTokenRenewal class to
    do with using the right credentials when talking to the NameNode.(ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1550">MAPREDUCE-1550</a>. Fixes a problem to do with creating a filesystem using
    the user's UGI in the JobHistory browsing. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6609">HADOOP-6609</a>. Fix UTF8 to use a thread local DataOutputBuffer instead of
    a static that was causing a deadlock in RPC. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6584">HADOOP-6584</a>. Fix javadoc warnings introduced by original <a href="https://issues.apache.org/jira/browse/HADOOP-6584">HADOOP-6584</a>
    patch (jhoman)
    
    <a href="https://issues.apache.org/jira/browse/HDFS-1017">HDFS-1017</a>. browsedfs jsp should call JspHelper.getUGI rather than using 
    createRemoteUser(). (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-899.">MAPREDUCE-899.</a> Modified LinuxTaskController to check that task-controller
    has right permissions and ownership before performing any actions.
    (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-204">HDFS-204</a>. Revive number of files listed metrics. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6569">HADOOP-6569</a>. FsShell#cat should avoid calling uneccessary getFileStatus
    before opening a file to read. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1014">HDFS-1014</a>. Error in reading delegation tokens from edit logs. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-458">HDFS-458</a>. Add under-10-min tests from 0.22 to 0.20.1xx, only the tests
    that already exist in 0.20.1xx (steffl)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1155">MAPREDUCE-1155</a>. Just pulls out the TestStreamingExitStatus part of the
    patch from jira (that went to 0.22). (ddas)
 
    <a href="https://issues.apache.org/jira/browse/HADOOP-6600">HADOOP-6600</a>. Fix for branch backport only. Comparing of user should use
    equals. (boryas).

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1006">HDFS-1006</a>. Fixes NameNode and SecondaryNameNode to use kerberizedSSL for
    the http communication. (Jakob Homan via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1007">HDFS-1007</a>. Fixes a bug on top of the earlier patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1005">HDFS-1005</a>. Fsck security. Makes it work over kerberized SSL (boryas and 
    jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1007">HDFS-1007</a>. Makes HFTP and Distcp use kerberized SSL. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1455">MAPREDUCE-1455</a>. Fixes a testcase in the earlier patch. 
    (Ravi Gummadi via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-992">HDFS-992</a>. Refactors block access token implementation to conform to the 
    generic Token interface. (Kan Zhang via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6584">HADOOP-6584</a>. Adds KrbSSL connector for jetty. (Jakob Homan via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6589">HADOOP-6589</a>. Add a framework for better error messages when rpc connections
    fail to authenticate. (Kan Zhang via omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6600">HADOOP-6600</a>,<a href="https://issues.apache.org/jira/browse/HDFS-1003,<a href="https://issues">HDFS-1003,<a href="https://issues</a>.apache.org/jira/browse/MAPREDUCE-1539">MAPREDUCE-1539</a>. mechanism for authorization check
    for inter-server protocols(boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6580">HADOOP-6580</a>,<a href="https://issues.apache.org/jira/browse/HDFS-993,<a href="https://issues">HDFS-993,<a href="https://issues</a>.apache.org/jira/browse/MAPREDUCE-1516">MAPREDUCE-1516</a>. UGI should contain authentication 
    method.

<li> Namenode and JT should issue a delegation token only for kerberos 
    authenticated  clients. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-984,<a href="https://issues">HDFS-984,<a href="https://issues</a>.apache.org/jira/browse/HADOOP-6573">HADOOP-6573</a>,<a href="https://issues.apache.org/jira/browse/MAPREDUCE-1537">MAPREDUCE-1537</a>. Delegation Tokens should be persisted
    in Namenode, and corresponding changes in common and mr. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-994">HDFS-994</a>. Provide methods for obtaining delegation token from Namenode for 
    hftp and other uses. Incorporates <a href="https://issues.apache.org/jira/browse/HADOOP-6594">HADOOP-6594</a>: Update hdfs script to 
    provide fetchdt tool. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6586">HADOOP-6586</a>. Log authentication and authorization failures and successes
    (boryas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-991">HDFS-991</a>. Allow use of delegation tokens to authenticate to the 
    HDFS servlets. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-1849">HADOOP-1849</a>. Add undocumented configuration parameter for per handler 
    call queue size in IPC Server. (shv)
    
    <a href="https://issues.apache.org/jira/browse/HADOOP-6599">HADOOP-6599</a>. Split existing RpcMetrics with summary in RpcMetrics and
    details information in RpcDetailedMetrics. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-985">HDFS-985</a>. HDFS should issue multiple RPCs for listing a large directory.
    (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-1000">HDFS-1000</a>. Updates libhdfs to use the new UGI. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1532">MAPREDUCE-1532</a>. Ensures all filesystem operations at the client is done
    as the job submitter. Also, changes the renewal to maintain list of tokens
    to renew. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6596">HADOOP-6596</a>. Add a version field to the seialization of the 
    AbstractDelegationTokenIdentifier. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5561">HADOOP-5561</a>. Add javadoc.maxmemory to build.xml to allow larger memory.
    (jkhoman via omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6579">HADOOP-6579</a>. Add a mechanism for encoding and decoding Tokens in to
    url-safe strings. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1354">MAPREDUCE-1354</a>. Make incremental changes in jobtracker for
    improving scalability (acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-999">HDFS-999</a>.Secondary namenode should login using kerberos if security
    is configured(boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1466">MAPREDUCE-1466</a>. Added a private configuration variable 
    mapreduce.input.num.files, to store number of input files 
    being processed by M/R job. (Arun Murthy via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1403">MAPREDUCE-1403</a>. Save file-sizes of each of the artifacts in 
    DistributedCache in the JobConf (Arun Murthy via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6543">HADOOP-6543</a>. Fixes a compilation problem in the original commit. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1520">MAPREDUCE-1520</a>. Moves a call to setWorkingDirectory in Child to within
    a doAs block. (Amareshwari Sriramadasu via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6543">HADOOP-6543</a>. Allows secure clients to talk to unsecure clusters. 
    (Kan Zhang via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1505">MAPREDUCE-1505</a>. Delays construction of the job client until it is really
    required. (Arun C Murthy via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6549">HADOOP-6549</a>. TestDoAsEffectiveUser should use ip address of the host
    for superuser ip check. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-464">HDFS-464</a>. Fix memory leaks in libhdfs. (Christian Kunz via suresh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-946">HDFS-946</a>. NameNode should not return full path name when lisitng a
    diretory or getting the status of a file. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1398">MAPREDUCE-1398</a>. Fix TaskLauncher to stop waiting for slots on a TIP 
    that is killed / failed. (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1476">MAPREDUCE-1476</a>. Fix the M/R framework to not call commit for special 
    tasks like job setup/cleanup and task cleanup.
    (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6467">HADOOP-6467</a>.  Performance improvement for liststatus on directories in
    hadoop archives. (mahadev)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6558">HADOOP-6558</a>. archive does not work with distcp -update. (nicholas via
    mahadev)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6583">HADOOP-6583</a>. Captures authentication and authorization metrics. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1316">MAPREDUCE-1316</a>. Fixes a memory leak of TaskInProgress instances in
    the jobtracker. (Amar Kamat via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-670.">MAPREDUCE-670.</a> Creates ant target for 10 mins patch test build.
    (Jothi Padmanabhan via gkesavan)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1430">MAPREDUCE-1430</a>. JobTracker should be able to renew delegation tokens 
    for the jobs(boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6551">HADOOP-6551</a>, <a href="https://issues.apache.org/jira/browse/HDFS-986, <a href="https://issues">HDFS-986, <a href="https://issues</a>.apache.org/jira/browse/MAPREDUCE-1503">MAPREDUCE-1503</a>. Change API for tokens to throw
    exceptions instead of returning booleans. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6545">HADOOP-6545</a>. Changes the Key for the FileSystem to be UGI. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6572">HADOOP-6572</a>. Makes sure that SASL encryption and push to responder queue 
    for the RPC response happens atomically. (Kan Zhang via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-965">HDFS-965</a>. Split the HDFS TestDelegationToken into two tests, of which
    one proxy users and the other normal users. (jitendra via omalley)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6560">HADOOP-6560</a>. HarFileSystem throws NPE for har://hdfs-/foo (nicholas via
    mahadev)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-686.">MAPREDUCE-686.</a> Move TestSpeculativeExecution.Fake* into a separate class
    so that it can be used by other tests. (Jothi Padmanabhan via sharad)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-181.">MAPREDUCE-181.</a> Fixes an issue in the use of the right config. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1026">MAPREDUCE-1026</a>. Fixes a bug in the backport. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6559">HADOOP-6559</a>. Makes the RPC client automatically re-login when the SASL 
    connection setup fails. This is applicable to only keytab based logins. 
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-2141">HADOOP-2141</a>. Backport changes made in the original JIRA to aid
    fast unit tests in Map/Reduce. (Amar Kamat via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6382">HADOOP-6382</a>.  Import the mavenizable pom file structure and adjust
    the build targets and bin scripts. (gkesvan via ltucker)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1425">MAPREDUCE-1425</a>. archive throws OutOfMemoryError (mahadev) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1399">MAPREDUCE-1399</a>. The archive command shows a null error message. (nicholas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6552">HADOOP-6552</a>. Puts renewTGT=true and useTicketCache=true for the keytab 
    kerberos options. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1433">MAPREDUCE-1433</a>. Adds delegation token for MapReduce (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4359">HADOOP-4359</a>. Fixes a bug in the earlier backport. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6547">HADOOP-6547</a>, <a href="https://issues.apache.org/jira/browse/HDFS-949, <a href="https://issues">HDFS-949, <a href="https://issues</a>.apache.org/jira/browse/MAPREDUCE-1470">MAPREDUCE-1470</a>. Move Delegation token into Common 
    so that we can use it for MapReduce also. It is a combined patch for 
    common, hdfs and mr. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6510">HADOOP-6510</a>,<a href="https://issues.apache.org/jira/browse/HDFS-935,<a href="https://issues">HDFS-935,<a href="https://issues</a>.apache.org/jira/browse/MAPREDUCE-1464">MAPREDUCE-1464</a>. Support for doAs to allow 
    authenticated superuser to impersonate proxy users. It is a combined 
    patch with compatible fixes in HDFS and MR. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1435">MAPREDUCE-1435</a>. Fixes the way symlinks are handled when cleaning up
    work directory files. (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-6419">MAPREDUCE-6419</a>. Fixes a bug in the backported patch. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1457">MAPREDUCE-1457</a>. Fixes JobTracker to get the FileSystem object within 
    getStagingAreaDir within a privileged block. Fixes Child.java to use the
    appropriate UGIs while getting the TaskUmbilicalProtocol proxy and while
    executing the task. Contributed by Jakob Homan. (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1440">MAPREDUCE-1440</a>. Replace the long user name in MapReduce with the local
    name. (ddas) 

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6419">HADOOP-6419</a>. Adds SASL based authentication to RPC. Also includes the 
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1335">MAPREDUCE-1335</a> and <a href="https://issues.apache.org/jira/browse/HDFS-933 patches">HDFS-933 patches</a>. Contributed by Kan Zhang. 
    (ddas)
 
    <a href="https://issues.apache.org/jira/browse/HADOOP-6538">HADOOP-6538</a>. Sets hadoop.security.authentication to simple by default.
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-938">HDFS-938</a>.  Replace calls to UGI.getUserName() with 
    UGI.getShortUserName()(boryas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6544">HADOOP-6544</a>. fix ivy settings to include JSON jackson.codehause.org
     libs for .20 (boryas)
     
    <a href="https://issues.apache.org/jira/browse/HDFS-907">HDFS-907</a>. Add tests for getBlockLocations and totalLoad metrics. (rphulari)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6204">HADOOP-6204</a>. Implementing aspects development and fault injeciton
    framework for Hadoop (cos)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1432">MAPREDUCE-1432</a>. Adds hooks in the jobtracker and tasktracker
    for loading the tokens in the user's ugi. This is required for
    the copying of files from the hdfs. (Devaraj Das vi boryas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1383">MAPREDUCE-1383</a>. Automates fetching of delegation tokens in File*Formats
    Distributed Cache and Distcp. Also, provides a config 
    mapreduce.job.hdfs-servers that the jobs can populate with a comma 
    separated list of namenodes. The job client automatically fetches 
    delegation tokens from those namenodes.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6337">HADOOP-6337</a>. Update FilterInitializer class to be more visible
    and take a conf for further development. (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6520">HADOOP-6520</a>. UGI should load tokens from the environment. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6517">HADOOP-6517</a>, <a href="https://issues.apache.org/jira/browse/HADOOP-6518">HADOOP-6518</a>. Ability to add/get tokens from 
    UserGroupInformation & Kerberos login in UGI should honor KRB5CCNAME
    (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6299">HADOOP-6299</a>. Reimplement the UserGroupInformation to use the OS
    specific and Kerberos JAAS login. (jhoman, ddas, oom)
    
    <a href="https://issues.apache.org/jira/browse/HADOOP-6524">HADOOP-6524</a>. Contrib tests are failing Clover'ed build. (cos)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-842.">MAPREDUCE-842.</a> Fixing a bug in the earlier version of the patch
    related to improper localization of the job token file.
    (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-919">HDFS-919</a>. Create test to validate the BlocksVerified metric (Gary Murry
    via cos)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1186">MAPREDUCE-1186</a>. Modified code in distributed cache to set 
    permissions only on required set of localized paths.
    (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-899">HDFS-899</a>. Delegation Token Implementation. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-896.">MAPREDUCE-896.</a> Enhance tasktracker to cleanup files that might have 
    been created by user tasks with non-writable permissions. 
    (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5879">HADOOP-5879</a>. Read compression level and strategy from Configuration for
    gzip compression. (He Yongqiang via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6161">HADOOP-6161</a>. Add get/setEnum methods to Configuration. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6382">HADOOP-6382</a> Mavenize the build.xml targets and update the bin scripts
    in preparation for publishing POM files (giri kesavan via ltucker)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-737">HDFS-737</a>. Add full path name of the file to the block information and 
    summary of total number of files, blocks, live and deadnodes to 
    metasave output. (Jitendra Nath Pandey via suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6577">HADOOP-6577</a>. Add hidden configuration option "ipc.server.max.response.size"
    to change the default 1 MB, the maximum size when large IPC handler 
    response buffer is reset. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6521">HADOOP-6521</a>. Fix backward compatiblity issue with umask when applications 
    use deprecated param dfs.umask in configuration or use 
    FsPermission.setUMask(). (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-737">HDFS-737</a>. Add full path name of the file to the block information and 
    summary of total number of files, blocks, live and deadnodes to 
    metasave output. (Jitendra Nath Pandey via suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6521">HADOOP-6521</a>. Fix backward compatiblity issue with umask when applications 
    use deprecated param dfs.umask in configuration or use 
    FsPermission.setUMask(). (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-433.">MAPREDUCE-433.</a> Use more reliable counters in TestReduceFetch.
    (Christopher Douglas via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-744.">MAPREDUCE-744.</a> Introduces the notion of a public distributed cache.
    (ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1140">MAPREDUCE-1140</a>. Fix DistributedCache to not decrement reference counts 
    for unreferenced files in error conditions.    
    (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1284">MAPREDUCE-1284</a>. Fix fts_open() call in task-controller that was failing 
    LinuxTaskController unit tests. (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1098">MAPREDUCE-1098</a>. Fixed the distributed-cache to not do i/o while 
    holding a global lock.
    (Amareshwari Sriramadasu via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1338">MAPREDUCE-1338</a>. Introduces the notion of token cache using which 
    tokens and secrets can be sent by the Job client to the JobTracker.
    (Boris Shkolnik)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6495">HADOOP-6495</a>. Identifier should be serialized after the password is created
    In Token constructor. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6506">HADOOP-6506</a>. Failing tests prevent the rest of test targets from
    execution. (cos)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5457">HADOOP-5457</a>. Fix to continue to run builds even if contrib test fails.
    (gkesavan)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-856.">MAPREDUCE-856.</a> Setup secure permissions for distributed cache files.
    (Vinod Kumar Vavilapalli via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-871.">MAPREDUCE-871.</a> Fix ownership of Job/Task local files to have correct 
    group ownership according to the egid of the tasktracker.
    (Vinod Kumar Vavilapalli via yhemanth)
    
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-476.">MAPREDUCE-476.</a> Extend DistributedCache to work locally (LocalJobRunner). 
    (Philip Zeyliger via tomwhite)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-711.">MAPREDUCE-711.</a> Removed Distributed Cache from Common, to move it under 
    Map/Reduce. (Vinod Kumar Vavilapalli via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-478.">MAPREDUCE-478.</a> Allow map and reduce jvm parameters, environment 
    variables and ulimit to be set separately. (acmurthy)
 
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-842.">MAPREDUCE-842.</a> Setup secure permissions for localized job files, 
    intermediate outputs and log files on tasktrackers.
    (Vinod Kumar Vavilapalli via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-408.">MAPREDUCE-408.</a> Fixes an assertion problem in TestKillSubProcesses.
    (Ravi Gummadi via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4041">HADOOP-4041</a>. IsolationRunner does not work as documented.
    (Philip Zeyliger via tomwhite)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-181.">MAPREDUCE-181.</a> Changes the job submission process to be secure.
    (Devaraj Das)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5737">HADOOP-5737</a>. Fixes a problem in the way the JobTracker used to talk to 
    other daemons like the NameNode to get the job's files. Also adds APIs 
    in the JobTracker to get the FileSystem objects as per the JobTracker's 
    configuration. (Amar Kamat via ddas)
 
    <a href="https://issues.apache.org/jira/browse/HADOOP-5771">HADOOP-5771</a>. Implements unit tests for LinuxTaskController.
    (Sreekanth Ramakrishnan and Vinod Kumar Vavilapalli via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4656">HADOOP-4656</a>, <a href="https://issues.apache.org/jira/browse/HDFS-685, <a href="https://issues">HDFS-685, <a href="https://issues</a>.apache.org/jira/browse/MAPREDUCE-1083">MAPREDUCE-1083</a>. Use the user-to-groups mapping 
    service in the NameNode and JobTracker. Combined patch for these 3 jiras 
    otherwise tests fail. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1250">MAPREDUCE-1250</a>. Refactor job token to use a common token interface.
    (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1026">MAPREDUCE-1026</a>. Shuffle should be secure. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4268">HADOOP-4268</a>. Permission checking in fsck. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6415">HADOOP-6415</a>. Adding a common token interface for both job token and 
    delegation token. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6367">HADOOP-6367</a>, <a href="https://issues.apache.org/jira/browse/HDFS-764">HDFS-764</a>. Moving Access Token implementation from Common to 
    HDFS. These two jiras must be committed together otherwise build will
    fail. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-409">HDFS-409</a>. Add more access token tests
    (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6132">HADOOP-6132</a>. RPC client opens an extra connection for VersionedProtocol.
    (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-445">HDFS-445</a>. pread() fails when cached block locations are no longer valid.
    (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-195">HDFS-195</a>. Need to handle access token expiration when re-establishing the 
    pipeline for dfs write. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6176">HADOOP-6176</a>. Adding a couple private methods to AccessTokenHandler 
    for testing purposes. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5824">HADOOP-5824</a>. remove OP_READ_METADATA functionality from Datanode.
    (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4359">HADOOP-4359</a>. Access Token: Support for data access authorization 
    checking on DataNodes. (Jitendra Nath Pandey)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1372">MAPREDUCE-1372</a>. Fixed a ConcurrentModificationException in jobtracker.
    (Arun C Murthy via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1316">MAPREDUCE-1316</a>. Fix jobs' retirement from the JobTracker to prevent memory
    leaks via stale references. (Amar Kamat via acmurthy)  

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1342">MAPREDUCE-1342</a>. Fixed deadlock in global blacklisting of tasktrackers. 
    (Amareshwari Sriramadasu via acmurthy)  

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6460">HADOOP-6460</a>. Reinitializes buffers used for serializing responses in ipc
    server on exceeding maximum response size to free up Java heap. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1100">MAPREDUCE-1100</a>. Truncate user logs to prevent TaskTrackers' disks from
    filling up. (Vinod Kumar Vavilapalli via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1143">MAPREDUCE-1143</a>. Fix running task counters to be updated correctly
    when speculative attempts are running for a TIP.
    (Rahul Kumar Singh via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6151">HADOOP-6151</a>, 6281, 6285,  6441. Add HTML quoting of the parameters to all
    of the servlets to prevent XSS attacks. (omalley)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-896.">MAPREDUCE-896.</a> Fix bug in earlier implementation to prevent
    spurious logging in tasktracker logs for absent file paths.
    (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-676.">MAPREDUCE-676.</a> Fix Hadoop Vaidya to ensure it works for map-only jobs. 
    (Suhas Gogate via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5582">HADOOP-5582</a>. Fix Hadoop Vaidya to use new Counters in
    org.apache.hadoop.mapreduce package. (Suhas Gogate via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HDFS-595">HDFS-595</a>.  umask settings in configuration may now use octal or 
    symbolic instead of decimal.  Update HDFS tests as such.  (jghoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1068">MAPREDUCE-1068</a>. Added a verbose error message when user specifies an
    incorrect -file parameter. (Amareshwari Sriramadasu via acmurthy)  

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1171">MAPREDUCE-1171</a>. Allow the read-error notification in shuffle to be
    configurable. (Amareshwari Sriramadasu via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-353.">MAPREDUCE-353.</a> Allow shuffle read and connection timeouts to be
    configurable. (Amareshwari Sriramadasu via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/HDFS-781">HDFS-781</a>. Namenode metrics PendingDeletionBlocks is not decremented. 
    (suresh)
 
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1185">MAPREDUCE-1185</a>. Redirect running job url to history url if job is already 
    retired. (Amareshwari Sriramadasu and Sharad Agarwal via sharad)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-754.">MAPREDUCE-754.</a> Fix NPE in expiry thread when a TT is lost. (Amar Kamat 
    via sharad)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-896.">MAPREDUCE-896.</a> Modify permissions for local files on tasktracker before
    deletion so they can be deleted cleanly. (Ravi Gummadi via yhemanth)
 
    <a href="https://issues.apache.org/jira/browse/HADOOP-5771">HADOOP-5771</a>. Implements unit tests for LinuxTaskController.
    (Sreekanth Ramakrishnan and Vinod Kumar Vavilapalli via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1124">MAPREDUCE-1124</a>. Import Gridmix3 and Rumen. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1063">MAPREDUCE-1063</a>. Document gridmix benchmark. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-758">HDFS-758</a>. Changes to report status of decommissioining on the namenode web
    UI. (jitendra)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6234">HADOOP-6234</a>. Add new option dfs.umaskmode to set umask in configuration
    to use octal or symbolic instead of decimal. (Jakob Homan via suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1147">MAPREDUCE-1147</a>. Add map output counters to new API. (Amar Kamat via
    cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1182">MAPREDUCE-1182</a>. Fix overflow in reduce causing allocations to exceed the
    configured threshold. (cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4933">HADOOP-4933</a>. Fixes a ConcurrentModificationException problem that shows up
    when the history viewer is accessed concurrently.
    (Amar Kamat via ddas)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1140">MAPREDUCE-1140</a>. Fix DistributedCache to not decrement reference counts for 
    unreferenced files in error conditions.
    (Amareshwari Sriramadasu via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6203">HADOOP-6203</a>. FsShell rm/rmr error message indicates exceeding Trash quota
    and suggests using -skpTrash, when moving to trash fails.
    (Boris Shkolnik via suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5675">HADOOP-5675</a>. Do not launch a job if DistCp has no work to do. (Tsz Wo
    (Nicholas), SZE via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-457">HDFS-457</a>. Better handling of volume failure in Data Node storage,
    This fix is a port from hdfs-0.22 to common-0.20 by Boris Shkolnik.
    Contributed by Erik Steffl

<li> <a href="https://issues.apache.org/jira/browse/HDFS-625">HDFS-625</a>. Fix NullPointerException thrown from ListPathServlet. 
    Contributed by Suresh Srinivas.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6343">HADOOP-6343</a>. Log unexpected throwable object caught in RPC.  
    Contributed by Jitendra Nath Pandey

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1186">MAPREDUCE-1186</a>. Fixed DistributedCache to do a recursive chmod on just the
    per-cache directory, not all of mapred.local.dir.
    (Amareshwari Sriramadasu via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1231">MAPREDUCE-1231</a>. Add an option to distcp to ignore checksums when used with
    the upgrade option.
    (Jothi Padmanabhan via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1219">MAPREDUCE-1219</a>. Fixed JobTracker to not collect per-job metrics, thus
    easing load on it. (Amareshwari Sriramadasu via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-761">HDFS-761</a>. Fix failure to process rename operation from edits log due to
    quota verification. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1196">MAPREDUCE-1196</a>. Fix FileOutputCommitter to use the deprecated cleanupJob
    api correctly. (acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6344">HADOOP-6344</a>.  rm and rmr immediately delete files rather than sending
    to trash, despite trash being enabled, if a user is over-quota. (jhoman)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1160">MAPREDUCE-1160</a>. Reduce verbosity of log lines in some Map/Reduce classes
    to avoid filling up jobtracker logs on a busy cluster.
    (Ravi Gummadi and Hong Tang via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-587">HDFS-587</a>. Add ability to run HDFS with MR test on non-default queue,
    also updated junit dependendcy from junit-3.8.1 to junit-4.5 (to make
    it possible to use Configured and Tool to process command line to
    be able to specify a queue). Contributed by Erik Steffl.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1158">MAPREDUCE-1158</a>. Fix JT running maps and running reduces metrics.
    (sharad)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-947.">MAPREDUCE-947.</a> Fix bug in earlier implementation that was
    causing unit tests to fail.
    (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1062">MAPREDUCE-1062</a>. Fix MRReliabilityTest to work with retired jobs
    (Contributed by Sreekanth Ramakrishnan)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1090">MAPREDUCE-1090</a>. Modified log statement in TaskMemoryManagerThread to
    include task attempt id. (yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1098">MAPREDUCE-1098</a>. Fixed the distributed-cache to not do i/o while
    holding a global lock. (Amareshwari Sriramadasu via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1048">MAPREDUCE-1048</a>. Add occupied/reserved slot usage summary on
    jobtracker UI. (Amareshwari Sriramadasu via sharad)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1103">MAPREDUCE-1103</a>. Added more metrics to Jobtracker. (sharad)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-947.">MAPREDUCE-947.</a> Added commitJob and abortJob apis to OutputCommitter.
    Enhanced FileOutputCommitter to create a _SUCCESS file for successful
    jobs. (Amar Kamat & Jothi Padmanabhan via acmurthy) 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1105">MAPREDUCE-1105</a>. Remove max limit configuration in capacity scheduler in
    favor of max capacity percentage thus allowing the limit to go over
    queue capacity. (Rahul Kumar Singh via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1086">MAPREDUCE-1086</a>. Setup Hadoop logging environment for tasks to point to
    task related parameters. (Ravi Gummadi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-739.">MAPREDUCE-739.</a> Allow relative paths to be created inside archives. 
    (mahadev)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6097">HADOOP-6097</a>. Multiple bugs w/ Hadoop archives (mahadev)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6231">HADOOP-6231</a>. Allow caching of filesystem instances to be disabled on a
    per-instance basis (ben slusky via mahadev)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-826.">MAPREDUCE-826.</a>  harchive doesn't use ToolRunner / harchive returns 0 even
    if the job fails with exception (koji via mahadev)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-686">HDFS-686</a>. NullPointerException is thrown while merging edit log and
    image. (hairong)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-709">HDFS-709</a>. Fix TestDFSShell failure due to rename bug introduced by 
    <a href="https://issues.apache.org/jira/browse/HDFS-677">HDFS-677</a>. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HDFS-677">HDFS-677</a>. Rename failure when both source and destination quota exceeds
    results in deletion of source. (suresh)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6284">HADOOP-6284</a>. Add a new parameter, HADOOP_JAVA_PLATFORM_OPTS, to
    hadoop-config.sh so that it allows setting java command options for
    JAVA_PLATFORM.  (Koji Noguchi via szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-732.">MAPREDUCE-732.</a> Removed spurious log statements in the node
    blacklisting logic. (Sreekanth Ramakrishnan via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-144.">MAPREDUCE-144.</a> Includes dump of the process tree in task diagnostics when 
    a task is killed due to exceeding memory limits.
    (Vinod Kumar Vavilapalli via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-979.">MAPREDUCE-979.</a> Fixed JobConf APIs related to memory parameters to 
    return values of new configuration variables when deprecated 
    variables are disabled. (Sreekanth Ramakrishnan via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-277.">MAPREDUCE-277.</a> Makes job history counters available on the job history
    viewers. (Jothi Padmanabhan via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5625">HADOOP-5625</a>. Add operation duration to clienttrace. (Lei Xu 
    via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5222">HADOOP-5222</a>. Add offset to datanode clienttrace. (Lei Xu via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6218">HADOOP-6218</a>. Adds a feature where TFile can be split by Record
    Sequence number. Contributed by Hong Tang and Raghu Angadi.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1088">MAPREDUCE-1088</a>. Changed permissions on JobHistory files on local disk to
    0744. Contributed by Arun C. Murthy.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6304">HADOOP-6304</a>. Use java.io.File.set{Readable|Writable|Executable} where
    possible in RawLocalFileSystem. Contributed by Arun C. Murthy.
    
    <a href="https://issues.apache.org/jira/browse/MAPREDUCE-270.">MAPREDUCE-270.</a> Fix the tasktracker to optionally send an out-of-band
    heartbeat on task-completion for better job-latency. Contributed by
    Arun C. Murthy
    Configuration changes:
      add mapreduce.tasktracker.outofband.heartbeat

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1030">MAPREDUCE-1030</a>. Fix capacity-scheduler to assign a map and a reduce task
    per-heartbeat. Contributed by Rahuk K Singh.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-1028">MAPREDUCE-1028</a>. Fixed number of slots occupied by cleanup tasks to one
    irrespective of slot size for the job. Contributed by Ravi Gummadi. 

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-964.">MAPREDUCE-964.</a> Fixed start and finish times of TaskStatus to be
    consistent, thereby fixing inconsistencies in metering tasks.
    Contributed by Sreekanth Ramakrishnan.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5976">HADOOP-5976</a>. Add a new command, classpath, to the hadoop 
    script. Contributed by Owen O'Malley and Gary Murry

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5784">HADOOP-5784</a>. Makes the number of heartbeats that should arrive 
    a second at the JobTracker configurable. Contributed by 
    Amareshwari Sriramadasu.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-945.">MAPREDUCE-945.</a> Modifies MRBench and TestMapRed to use 
    ToolRunner so that options such as queue name can be 
    passed via command line. Contributed by Sreekanth Ramakrishnan.

<li> HADOOP:5420 Correct bug in earlier implementation
    by Arun C. Murthy

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5363">HADOOP-5363</a> Add support for proxying connections to multiple 
    clusters with different versions to hdfsproxy. Contributed 
    by Zhiyong Zhang

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5780">HADOOP-5780</a>. Improve per block message prited by -metaSave 
    in HDFS. (Raghu Angadi)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6227">HADOOP-6227</a>. Fix Configuration to allow final parameters to be set 
    to null and prevent them from being overridden. Contributed by 
    Amareshwari Sriramadasu.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-430 ">MAPREDUCE-430 </a> Added patch supplied by Amar Kamat to allow roll forward
    on branch to includ externally committed patch.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-768.">MAPREDUCE-768.</a> Provide an option to dump jobtracker configuration in 
    JSON format to standard output. Contributed by V.V.Chaitanya

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-834 ">MAPREDUCE-834 </a>Correct an issue created by merging this issue with
    patch attached to external Jira.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-6184">HADOOP-6184</a> Provide an API to dump Configuration in a JSON format. 
    Contributed by V.V.Chaitanya Krishna.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-745 ">MAPREDUCE-745 </a> Patch added for this issue to allow branch-0.20 to 
    merge cleanly.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-478 ">MAPREDUCE-478 </a>Allow map and reduce jvm parameters, environment 
    variables and ulimit to be set separately.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-682 ">MAPREDUCE-682 </a>Removes reservations on tasktrackers which are blacklisted. 
    Contributed by Sreekanth Ramakrishnan.

<li> HADOOP:5420 Support killing of process groups in LinuxTaskController 
    binary

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5488">HADOOP-5488</a> Removes the pidfile management for the Task JVM from the 
    framework and instead passes the PID back and forth between the 
    TaskTracker and the Task processes. Contributed by Ravi Gummadi.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-467 ">MAPREDUCE-467 </a>Provide ability to collect statistics about total tasks and 
    succeeded tasks in different time windows.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-817.">MAPREDUCE-817.</a> Add a cache for retired jobs with minimal job
    info and provide a way to access history file url

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-814.">MAPREDUCE-814.</a> Provide a way to configure completed job history
    files to be on HDFS.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-838 ">MAPREDUCE-838 </a>Fixes a problem in the way commit of task outputs
    happens. The bug was that even if commit failed, the task would be
    declared as successful. Contributed by Amareshwari Sriramadasu.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-809 ">MAPREDUCE-809 </a>Fix job-summary logs to correctly record final status of 
    FAILED and KILLED jobs.  

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-740 ">MAPREDUCE-740 </a>Log a job-summary at the end of a job, while
    allowing it to be configured to use a custom appender if desired.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-771 ">MAPREDUCE-771 </a>Fixes a bug which delays normal jobs in favor of
    high-ram jobs.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5420">HADOOP-5420</a> Support setsid based kill in LinuxTaskController.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-733 ">MAPREDUCE-733 </a>Fixes a bug that when a task tracker is killed ,
    it throws exception. Instead it should catch it and process it and
    allow the rest of the flow to go through

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-734 ">MAPREDUCE-734 </a>Fixes a bug which prevented hi ram jobs from being
    removed from the scheduler queue.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-693 ">MAPREDUCE-693 </a> Fixes a bug that when a job is submitted and the
    JT is restarted (before job files have been written) and the job
    is killed after recovery, the conf files fail to be moved to the
    "done" subdirectory.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-722 ">MAPREDUCE-722 </a>Fixes a bug where more slots are getting reserved
    for HiRAM job tasks than required.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-683 ">MAPREDUCE-683 </a>TestJobTrackerRestart failed because of stale
    filemanager cache (which was created once per jvm). This patch makes
    sure that the filemanager is inited upon every JobHistory.init()
    and hence upon every restart. Note that this wont happen in production
    as upon a restart the new jobtracker will start in a new jvm and
    hence a new cache will be created.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-709 ">MAPREDUCE-709 </a>Fixes a bug where node health check script does
    not display the correct message on timeout.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-708 ">MAPREDUCE-708 </a>Fixes a bug where node health check script does
    not refresh the "reason for blacklisting".

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-522 ">MAPREDUCE-522 </a>Rewrote TestQueueCapacities to make it simpler
    and avoid timeout errors.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-532 ">MAPREDUCE-532 </a>Provided ability in the capacity scheduler to
    limit the number of slots that can be concurrently used per queue
    at any given time.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-211 ">MAPREDUCE-211 </a>Provides ability to run a health check script on
    the tasktracker nodes and blacklist nodes if they are unhealthy.
    Contributed by Sreekanth Ramakrishnan.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-516 ">MAPREDUCE-516 </a>Remove .orig file included by mistake.

<li> <a href="https://issues.apache.org/jira/browse/MAPREDUCE-416 ">MAPREDUCE-416 </a>Moves the history file to a "done" folder whenever
    a job completes.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5980">HADOOP-5980</a> Previously, task spawned off by LinuxTaskController
    didn't get LD_LIBRARY_PATH in their environment. The tasks will now
    get same LD_LIBRARY_PATH value as when spawned off by
    DefaultTaskController.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5981">HADOOP-5981</a> This issue completes the feature mentioned in
    <a href="https://issues.apache.org/jira/browse/HADOOP-2838">HADOOP-2838</a>. <a href="https://issues.apache.org/jira/browse/HADOOP-2838">HADOOP-2838</a> provided a way to set env variables in
    child process. This issue provides a way to inherit tt's env variables
    and append or reset it. So now X=$X:y will inherit X (if there) and
    append y to it.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5419">HADOOP-5419</a>  This issue is to provide an improvement on the
    existing M/R framework to let users know which queues they have
    access to, and for what operations. One use case for this would
    that currently there is no easy way to know if the user has access
    to submit jobs to a queue, until it fails with an access control
    exception.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5420">HADOOP-5420</a> Support setsid based kill in LinuxTaskController.

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5643">HADOOP-5643</a> Added the functionality to refresh jobtrackers node
    list via command line (bin/hadoop mradmin -refreshNodes). The command
    should be run as the jobtracker owner (jobtracker process owner)
    or from a super group (mapred.permissions.supergroup).

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-2838">HADOOP-2838</a> Now the users can set environment variables using
    mapred.child.env. They can do the following X=Y : set X to Y X=$X:Y
    : Append Y to X (which should be taken from the tasktracker)
    
    <a href="https://issues.apache.org/jira/browse/HADOOP-5818">HADOOP-5818</a>. Revert the renaming from FSNamesystem.checkSuperuserPrivilege
    to checkAccess by <a href="https://issues.apache.org/jira/browse/HADOOP-5643">HADOOP-5643</a>.  (Amar Kamat via szetszwo)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5801">HADOOP-5801</a>. Fixes the problem: If the hosts file is changed across restart
    then it should be refreshed upon recovery so that the excluded hosts are
    lost and the maps are re-executed. (Amar Kamat via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5643">HADOOP-5643</a>. <a href="https://issues.apache.org/jira/browse/HADOOP-5643">HADOOP-5643</a>. Adds a way to decommission TaskTrackers 
    while the JobTracker is running. (Amar Kamat via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5419">HADOOP-5419</a>. Provide a facility to query the Queue ACLs for the
    current user.  (Rahul Kumar Singh via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5733">HADOOP-5733</a>. Add map/reduce slot capacity and blacklisted capacity to
    JobTracker metrics. (Sreekanth Ramakrishnan via cdouglas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5738">HADOOP-5738</a>. Split "waiting_tasks" JobTracker metric into waiting maps and
    waiting reduces. (Sreekanth Ramakrishnan via cdouglas) 

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4842">HADOOP-4842</a>. Streaming now allows specifiying a command for the combiner.
    (Amareshwari Sriramadasu via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4490">HADOOP-4490</a>. Provide ability to run tasks as job owners.
    (Sreekanth Ramakrishnan via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5442">HADOOP-5442</a>. Paginate jobhistory display and added some search
    capabilities. (Amar Kamat via acmurthy)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-3327">HADOOP-3327</a>. Improves handling of READ_TIMEOUT during map output copying.
    (Amareshwari Sriramadasu via ddas)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-5113">HADOOP-5113</a>. Fixed logcondense to remove files for usernames
    beginning with characters specified in the -l option.
    (Peeyush Bishnoi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-2898">HADOOP-2898</a>. Provide an option to specify a port range for
    Hadoop services provisioned by HOD.
    (Peeyush Bishnoi via yhemanth)

<li> <a href="https://issues.apache.org/jira/browse/HADOOP-4930">HADOOP-4930</a>. Implement a Linux native executable that can be used to
    launch tasks as users. (Sreekanth Ramakrishnan via yhemanth)
</ul>

</body>
</html>
