Author: atm
Date: Wed Feb 15 19:04:17 2012
New Revision: 1244645
URL: http://svn.apache.org/viewvc?rev=1244645&view=rev
Log:
Merge trunk into HA branch.
Modified:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/CHANGES.txt
(contents, props changed)
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/docs/
(props changed)
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/
(props changed)
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ReflectionUtils.java
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/test/core/
(props changed)
Modified:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1244645&r1=1244644&r2=1244645&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/CHANGES.txt
Wed Feb 15 19:04:17 2012
@@ -169,6 +169,10 @@ Release 0.23.2 - UNRELEASED
HADOOP-8071. Avoid an extra packet in client code when nagling is
disabled. (todd)
+ HADOOP-6502. Improve the performance of Configuration.getClassByName when
+ the class is not found by caching negative results.
+ (sharad, todd via todd)
+
BUG FIXES
HADOOP-8042 When copying a file out of HDFS, modifying it, and uploading
Propchange:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/CHANGES.txt
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 15 19:04:17 2012
@@ -1,6 +1,6 @@
/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt:1243206
/hadoop/common/branches/yahoo-merge/CHANGES.txt:1079157,1079163-1079164,1079167
-/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt:1161333-1244197
+/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt:1161333-1244642
/hadoop/core/branches/branch-0.18/CHANGES.txt:727226
/hadoop/core/branches/branch-0.19/CHANGES.txt:713112
/hadoop/core/trunk/CHANGES.txt:776175-785643,785929-786278
Propchange:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/docs/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 15 19:04:17 2012
@@ -1,2 +1,2 @@
-/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/docs:1152502-1244197
+/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/docs:1152502-1244642
/hadoop/core/branches/branch-0.19/src/docs:713112
Propchange:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 15 19:04:17 2012
@@ -1,3 +1,3 @@
-/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java:1152502-1244197
+/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java:1152502-1244642
/hadoop/core/branches/branch-0.19/core/src/java:713112
/hadoop/core/trunk/src/core:776175-785643,785929-786278
Modified:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java?rev=1244645&r1=1244644&r2=1244645&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
Wed Feb 15 19:04:17 2012
@@ -1146,6 +1146,22 @@ public class Configuration implements It
* @throws ClassNotFoundException if the class is not found.
*/
public Class<?> getClassByName(String name) throws ClassNotFoundException {
+ Class<?> ret = getClassByNameOrNull(name);
+ if (ret == null) {
+ throw new ClassNotFoundException("Class " + name + " not found");
+ }
+ return ret;
+ }
+
+ /**
+ * Load a class by name, returning null rather than throwing an exception
+ * if it couldn't be loaded. This is to avoid the overhead of creating
+ * an exception.
+ *
+ * @param name the class name
+ * @return the class object, or null if it could not be found.
+ */
+ public Class<?> getClassByNameOrNull(String name) {
Map<String, Class<?>> map;
synchronized (CACHE_CLASSES) {
@@ -1157,12 +1173,20 @@ public class Configuration implements It
}
}
- Class<?> clazz = map.get(name);
- if (clazz == null) {
- clazz = Class.forName(name, true, classLoader);
- if (clazz != null) {
- // two putters can race here, but they'll put the same class
- map.put(name, clazz);
+ Class<?> clazz = null;
+ if (!map.containsKey(name)) {
+ try {
+ clazz = Class.forName(name, true, classLoader);
+ } catch (ClassNotFoundException e) {
+ map.put(name, null); //cache negative that class is not found
+ return null;
+ }
+ // two putters can race here, but they'll put the same class
+ map.put(name, clazz);
+ } else { // check already performed on this class name
+ clazz = map.get(name);
+ if (clazz == null) { // found the negative
+ return null;
}
}
Modified:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ReflectionUtils.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ReflectionUtils.java?rev=1244645&r1=1244644&r2=1244645&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ReflectionUtils.java
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ReflectionUtils.java
Wed Feb 15 19:04:17 2012
@@ -86,17 +86,22 @@ public class ReflectionUtils {
//invoke configure on theObject
try {
Class<?> jobConfClass =
- conf.getClassByName("org.apache.hadoop.mapred.JobConf");
+ conf.getClassByNameOrNull("org.apache.hadoop.mapred.JobConf");
+ if (jobConfClass == null) {
+ return;
+ }
+
Class<?> jobConfigurableClass =
- conf.getClassByName("org.apache.hadoop.mapred.JobConfigurable");
- if (jobConfClass.isAssignableFrom(conf.getClass()) &&
+ conf.getClassByNameOrNull("org.apache.hadoop.mapred.JobConfigurable");
+ if (jobConfigurableClass == null) {
+ return;
+ }
+ if (jobConfClass.isAssignableFrom(conf.getClass()) &&
jobConfigurableClass.isAssignableFrom(theObject.getClass())) {
Method configureMethod =
jobConfigurableClass.getMethod("configure", jobConfClass);
configureMethod.invoke(theObject, conf);
}
- } catch (ClassNotFoundException e) {
- //JobConf/JobConfigurable not in classpath. no need to configure
} catch (Exception e) {
throw new RuntimeException("Error in configuring object", e);
}
Modified:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml?rev=1244645&r1=1244644&r2=1244645&view=diff
==============================================================================
---
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
(original)
+++
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
Wed Feb 15 19:04:17 2012
@@ -217,6 +217,13 @@
</property>
<property>
+ <name>fs.default.name</name>
+ <value>file:///</value>
+ <description>Deprecated. Use (fs.defaultFS) property
+ instead</description>
+</property>
+
+<property>
<name>fs.trash.interval</name>
<value>0</value>
<description>Number of minutes after which the checkpoint
Propchange:
hadoop/common/branches/HDFS-1623/hadoop-common-project/hadoop-common/src/test/core/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 15 19:04:17 2012
@@ -1,3 +1,3 @@
-/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/core:1152502-1244197
+/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/core:1152502-1244642
/hadoop/core/branches/branch-0.19/core/src/test/core:713112
/hadoop/core/trunk/src/test/core:776175-785643,785929-786278