diff --git a/CHANGES.txt b/CHANGES.txt
index 747c5ff..72d3436 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -376,6 +376,9 @@
     MAPREDUCE-2383. Improve documentation of DistributedCache methods (Harsh J
     Chouraria via todd)
 
+    MAPREDUCE-2222. Ivy resolve force mode should be turned off by default.
+    (Luke Lu via tomwhite)
+
   OPTIMIZATIONS
 
     MAPREDUCE-1354. Enhancements to JobTracker for better performance and
diff --git a/build.xml b/build.xml
index 8867324..58393b2 100644
--- a/build.xml
+++ b/build.xml
@@ -982,6 +982,8 @@
        <packageset dir="src/contrib/index/src/java"/>
        <packageset dir="src/contrib/mumak/src/java"/>
        <packageset dir="src/contrib/streaming/src/java"/>
+       <packageset dir="src/contrib/vaidya/src/java"/>
+       <packageset dir="src/contrib/vertica/src/java"/>
 
         <link href="${javadoc.link.java}"/>
 
@@ -1005,6 +1007,8 @@
        <group title="contrib: Gridmix" packages="org.apache.hadoop.mapred.gridmix*"/>
        <group title="contrib: Index" packages="org.apache.hadoop.contrib.index*"/>
        <group title="contrib: Streaming" packages="org.apache.hadoop.streaming*:org.apache.hadoop.typedbytes*"/>
+       <group title="contrib: Vaidya" packages="org.apache.hadoop.vaidya*"/>
+       <group title="contrib: Vertica" packages="org.apache.hadoop.vertica*"/>
     </javadoc>
   </target>	
 
@@ -1043,6 +1047,8 @@
        <packageset dir="src/contrib/gridmix/src/java"/>
        <packageset dir="src/contrib/index/src/java"/>
        <packageset dir="src/contrib/streaming/src/java"/>
+       <packageset dir="src/contrib/vaidya/src/java"/>
+       <packageset dir="src/contrib/vertica/src/java"/>
        <packageset dir="${tools.src}"/>
 	
         <link href="${javadoc.link.java}"/>
@@ -1067,6 +1073,9 @@
        <group title="contrib: Gridmix" packages="org.apache.hadoop.mapred.gridmix*"/>
        <group title="contrib: Index" packages="org.apache.hadoop.contrib.index*"/>
        <group title="contrib: Streaming" packages="org.apache.hadoop.streaming*:org.apache.hadoop.typedbytes*"/>
+       <group title="contrib: Vaidya" packages="org.apache.hadoop.vaidya*"/>
+       <group title="contrib: Vertica" packages="org.apache.hadoop.vertica*"/>
+
        <doclet name="org.apache.hadoop.classification.tools.ExcludePrivateAnnotationsStandardDoclet"
          path="${common.ivy.lib.dir}/hadoop-common-${hadoop-common.version}.jar"/>
     </javadoc>
diff --git a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/postexdiagnosis/PostExPerformanceDiagnoser.java b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/postexdiagnosis/PostExPerformanceDiagnoser.java
index 7544620..a73cf01 100644
--- a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/postexdiagnosis/PostExPerformanceDiagnoser.java
+++ b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/postexdiagnosis/PostExPerformanceDiagnoser.java
@@ -92,8 +92,8 @@
 
   /**
    * @param jobConfFile - URL pointing to job configuration (job_conf.xml) file
-   * @param jobHistoryLogFile - URL pointing to job history log file  
-   * @param testsConfFile - file path for test configuration file (optional). 
+   * @param jobHistoryFile - URL pointing to job history log file  
+   * @param testsConfFileIs - file path for test configuration file (optional). 
    * If not specified default path is:$HADOOP_HOME/contrib/vaidya/pxpd_tests_config.xml
    * @param reportFile - file path for storing report (optional)
    */
diff --git a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatistics.java b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatistics.java
index 8f1741e..e212ace 100644
--- a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatistics.java
+++ b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatistics.java
@@ -69,9 +69,6 @@
    */
   private java.util.Hashtable<Enum, String> _job;
 
-  /**
-   * @param jobConf the jobConf to set
-   */
   public JobConf getJobConf() {
     return this._jobConf;
   }
diff --git a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatisticsInterface.java b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatisticsInterface.java
index 39ca94e..8765496 100644
--- a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatisticsInterface.java
+++ b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/statistics/job/JobStatisticsInterface.java
@@ -61,7 +61,7 @@
   /**
    * @return mapTaskList : ArrayList of MapTaskStatistics
    * @param mapTaskSortKey : Specific counter key used for sorting the task list
-   * @param datatype : indicates the data type of the counter key used for sorting
+   * @param dataType : indicates the data type of the counter key used for sorting
    * If sort key is null then by default map tasks are sorted using map task ids.
    */
   public ArrayList<MapTaskStatistics> getMapTaskList(Enum mapTaskSortKey, KeyDataType dataType);
diff --git a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/util/XMLUtils.java b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/util/XMLUtils.java
index 22071c1..7a5613c 100644
--- a/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/util/XMLUtils.java
+++ b/src/contrib/vaidya/src/java/org/apache/hadoop/vaidya/util/XMLUtils.java
@@ -148,7 +148,6 @@
 
   /**
    * Parse the XML file and create Document
-   * @param fileName
    * @return Document
    */
   public static Document parse(InputStream fs) {
diff --git a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaConfiguration.java b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaConfiguration.java
index df9c1dd..da3c4ca 100644
--- a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaConfiguration.java
+++ b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaConfiguration.java
@@ -45,14 +45,7 @@
  *      String, String)
  * @see VerticaConfiguration#configureVertica(Configuration, String[], String,
  *      String, String, String[], String, String, String)
- * @see VerticaInputFormat#setInput(Job, String)
- * @see VerticaInputFormat#setInput(Job, String, Collection<List<Object>>)
- * @see VerticaInputFormat#setInput(Job, String, String)
- * @see VerticaInputFormat#setInput(Job, String, String...)
- * @see VerticaOutputFormat#setOutput(Job, String)
- * @see VerticaOutputFormat#setOutput(Job, String, Collection<VerticaTable>)
- * @see VerticaOutputFormat#setOutput(Job, String, boolean)
- * @see VerticaOutputFormat#setOutput(Job, String, boolean, String...)
+ * 
  */
 public class VerticaConfiguration {
   /** Vertica Version Constants */
@@ -309,7 +302,7 @@
    * Sets a collection of lists. Each list is passed to an input split and used
    * as arguments to the input query.
    * 
-   * @param segmentParams
+   * @param segment_params
    * @throws IOException
    */
   public void setInputParams(Collection<List<Object>> segment_params)
diff --git a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaInputSplit.java b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaInputSplit.java
index 26440ed..2c457e5 100644
--- a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaInputSplit.java
+++ b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaInputSplit.java
@@ -88,7 +88,6 @@
   /**
    * Return the parameters used for input query
    * 
-   * @return
    */
   public List<Object> getSegmentParams() {
     return segmentParams;
@@ -97,7 +96,6 @@
   /**
    * Run the query that, when executed returns input for the mapper
    * 
-   * @return
    * @throws Exception
    */
   public ResultSet executeQuery() throws Exception {
diff --git a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaOutputFormat.java b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaOutputFormat.java
index feda95e..93d10c0 100644
--- a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaOutputFormat.java
+++ b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaOutputFormat.java
@@ -48,7 +48,7 @@
   /**
    * Set the output table
    * 
-   * @param conf
+   * @param job
    * @param tableName
    */
   public static void setOutput(Job job, String tableName) {
@@ -136,7 +136,6 @@
     }
   }
 
-  /** {@inheritDoc} */
   public static VerticaRecord getValue(Configuration conf) throws Exception {
     VerticaConfiguration config = new VerticaConfiguration(conf);
     String table = config.getOutputTableName();
diff --git a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaRecordReader.java b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaRecordReader.java
index efe2f91..d505a64 100644
--- a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaRecordReader.java
+++ b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaRecordReader.java
@@ -48,7 +48,6 @@
     results = split.executeQuery();
   }
 
-  /** {@inheritDoc} */
   public void initialize(InputSplit split, TaskAttemptContext context)
       throws IOException, InterruptedException {
     key = new LongWritable();
@@ -71,12 +70,10 @@
     }
   }
 
-  /** {@inheritDoc} */
   public long getPos() throws IOException {
     return pos;
   }
 
-  /** {@inheritDoc} */
   public float getProgress() throws IOException {
     // TODO: figure out why length would be 0
     if (length == 0)
@@ -84,7 +81,6 @@
     return pos / length;
   }
 
-  /** {@inheritDoc} */
   public boolean next(LongWritable key, VerticaRecord value) throws IOException {
     key.set(pos + start);
     pos++;
diff --git a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaStreamingRecordReader.java b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaStreamingRecordReader.java
index c47b376..a2f3589 100644
--- a/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaStreamingRecordReader.java
+++ b/src/contrib/vertica/src/java/org/apache/hadoop/vertica/VerticaStreamingRecordReader.java
@@ -71,12 +71,10 @@
     }
   }
 
-  /** {@inheritDoc} */
   public long getPos() throws IOException {
     return pos;
   }
 
-  /** {@inheritDoc} */
   public float getProgress() throws IOException {
     // TODO: figure out why length would be 0
     if (length == 0)
