diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index c6289846c2..94a9f884cf 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -254,6 +254,10 @@ Branch-2 ( Unreleased changes ) HADOOP-8541. Better high-percentile latency metrics. (Andrew Wang via atm) + HADOOP-8362. Improve exception message when Configuration.set() is + called with a null key or value. (Madhukara Phatak + and Suresh Srinivas via harsh) + BUG FIXES HADOOP-8372. NetUtils.normalizeHostName() incorrectly handles hostname diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java index 068076a4ef..37a6b73fe8 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java @@ -84,6 +84,7 @@ import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; +import com.google.common.base.Preconditions; /** * Provides access to configuration parameters. @@ -781,8 +782,15 @@ public void set(String name, String value) { * @param value property value. * @param source the place that this configuration value came from * (For debugging). + * @throws IllegalArgumentException when the value or name is null. */ public void set(String name, String value, String source) { + Preconditions.checkArgument( + name != null, + "Property name must not be null"); + Preconditions.checkArgument( + value != null, + "Property value must not be null"); if (deprecatedKeyMap.isEmpty()) { getProps(); } diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java index b8e2873c8c..576d921000 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java @@ -1065,6 +1065,26 @@ public void testGetClassesShouldReturnEmptyArray() "Not returning expected number of classes. Number of returned classes =" + classes.length, 0, classes.length); } + + public void testSettingValueNull() throws Exception { + Configuration config = new Configuration(); + try { + config.set("testClassName", null); + fail("Should throw an IllegalArgumentException exception "); + } catch (Exception e) { + assertTrue(e instanceof IllegalArgumentException); + } + } + + public void testSettingKeyNull() throws Exception { + Configuration config = new Configuration(); + try { + config.set(null, "test"); + fail("Should throw an IllegalArgumentException exception "); + } catch (Exception e) { + assertTrue(e instanceof IllegalArgumentException); + } + } public void testInvalidSubstitutation() { String key = "test.random.key";