You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ha...@apache.org on 2012/05/25 16:02:02 UTC
svn commit: r1342626 - in
/hadoop/common/trunk/hadoop-common-project/hadoop-common: CHANGES.txt
src/main/java/org/apache/hadoop/conf/Configuration.java
src/test/java/org/apache/hadoop/conf/TestConfiguration.java
Author: harsh
Date: Fri May 25 14:02:01 2012
New Revision: 1342626
URL: http://svn.apache.org/viewvc?rev=1342626&view=rev
Log:
HADOOP-6871. When the value of a configuration key is set to its unresolved form, it causes an IllegalStateException in Configuration.get() stating that substitution depth is too large. Contributed by Arvind Prabhakar (harsh)
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1342626&r1=1342625&r2=1342626&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Fri May 25 14:02:01 2012
@@ -153,6 +153,11 @@ Trunk (unreleased changes)
HADOOP-8413. test-patch.sh gives out the wrong links for
newPatchFindbugsWarnings (Colin Patrick McCabe via bobby)
+ HADOOP-6871. When the value of a configuration key is set to its
+ unresolved form, it causes the IllegalStateException in
+ Configuration.get() stating that substitution depth is too large.
+ (Arvind Prabhakar via harsh)
+
OPTIMIZATIONS
HADOOP-7761. Improve the performance of raw comparisons. (todd)
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java?rev=1342626&r1=1342625&r2=1342626&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java Fri May 25 14:02:01 2012
@@ -617,7 +617,13 @@ public class Configuration implements It
}
Matcher match = varPat.matcher("");
String eval = expr;
+ Set<String> evalSet = new HashSet<String>();
for(int s=0; s<MAX_SUBST; s++) {
+ if (evalSet.contains(eval)) {
+ // Cyclic resolution pattern detected. Return current expression.
+ return eval;
+ }
+ evalSet.add(eval);
match.reset(eval);
if (!match.find()) {
return eval;
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java?rev=1342626&r1=1342625&r2=1342626&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java Fri May 25 14:02:01 2012
@@ -999,6 +999,15 @@ public class TestConfiguration extends T
"Not returning expected number of classes. Number of returned classes ="
+ classes.length, 0, classes.length);
}
+
+ public void testInvalidSubstitutation() {
+ String key = "test.random.key";
+ String keyExpression = "${" + key + "}";
+ Configuration configuration = new Configuration();
+ configuration.set(key, keyExpression);
+ String value = configuration.get(key);
+ assertTrue("Unexpected value " + value, value.equals(keyExpression));
+ }
public static void main(String[] argv) throws Exception {
junit.textui.TestRunner.main(new String[]{