Author: cnauroth
Date: Fri Jun 20 18:26:46 2014
New Revision: 1604227
URL: http://svn.apache.org/r1604227
Log:
HADOOP-9559. Merging change r1604225 from trunk to branch-2.
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/DefaultMetricsSystem.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/util/MBeans.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1604227&r1=1604226&r2=1604227&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
Fri Jun 20 18:26:46 2014
@@ -239,6 +239,9 @@ Release 2.5.0 - UNRELEASED
HADOOP-10716. Cannot use more than 1 har filesystem.
(Rushabh Shah via cnauroth)
+ HADOOP-9559. When metrics system is restarted MBean names get incorrectly
+ flagged as dupes. (Mostafa Elhemali and Mike Liddell via cnauroth)
+
BREAKDOWN OF HADOOP-10514 SUBTASKS AND RELATED JIRAS
HADOOP-10520. Extended attributes definition and FileSystem APIs for
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java?rev=1604227&r1=1604226&r2=1604227&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSourceAdapter.java
Fri Jun 20 18:26:46 2014
@@ -30,6 +30,7 @@ import javax.management.ObjectName;
import javax.management.ReflectionException;
import static com.google.common.base.Preconditions.*;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -227,7 +228,13 @@ class MetricsSourceAdapter implements Dy
mbeanName = null;
}
}
+
+ @VisibleForTesting
+ ObjectName getMBeanName() {
+ return mbeanName;
+ }
+
private void updateInfoCache() {
LOG.debug("Updating info cache...");
infoCache = infoBuilder.reset(lastRecs).get();
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java?rev=1604227&r1=1604226&r2=1604227&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/impl/MetricsSystemImpl.java
Fri Jun 20 18:26:46 2014
@@ -32,6 +32,7 @@ import javax.management.ObjectName;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.annotations.VisibleForTesting;
import java.util.Locale;
import static com.google.common.base.Preconditions.*;
@@ -577,6 +578,11 @@ public class MetricsSystemImpl extends M
return allSources.get(name);
}
+ @VisibleForTesting
+ MetricsSourceAdapter getSourceAdapter(String name) {
+ return sources.get(name);
+ }
+
private InitMode initMode() {
LOG.debug("from system property: "+ System.getProperty(MS_INIT_MODE_KEY));
LOG.debug("from environment variable: "+ System.getenv(MS_INIT_MODE_KEY));
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/DefaultMetricsSystem.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/DefaultMetricsSystem.java?rev=1604227&r1=1604226&r2=1604227&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/DefaultMetricsSystem.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/lib/DefaultMetricsSystem.java
Fri Jun 20 18:26:46 2014
@@ -103,6 +103,11 @@ public enum DefaultMetricsSystem {
}
@InterfaceAudience.Private
+ public static void removeMBeanName(ObjectName name) {
+ INSTANCE.removeObjectName(name.toString());
+ }
+
+ @InterfaceAudience.Private
public static String sourceName(String name, boolean dupOK) {
return INSTANCE.newSourceName(name, dupOK);
}
@@ -118,6 +123,10 @@ public enum DefaultMetricsSystem {
}
}
+ synchronized void removeObjectName(String name) {
+ mBeanNames.map.remove(name);
+ }
+
synchronized String newSourceName(String name, boolean dupOK) {
if (sourceNames.map.containsKey(name)) {
if (dupOK) {
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/util/MBeans.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/util/MBeans.java?rev=1604227&r1=1604226&r2=1604227&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/util/MBeans.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/util/MBeans.java
Fri Jun 20 18:26:46 2014
@@ -82,6 +82,7 @@ public class MBeans {
} catch (Exception e) {
LOG.warn("Error unregistering "+ mbeanName, e);
}
+ DefaultMetricsSystem.removeMBeanName(mbeanName);
}
static private ObjectName getMBeanName(String serviceName, String nameName) {
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java?rev=1604227&r1=1604226&r2=1604227&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/TestMetricsSystemImpl.java
Fri Jun 20 18:26:46 2014
@@ -360,6 +360,24 @@ public class TestMetricsSystemImpl {
ms.register(ts);
}
+ @Test public void testStartStopStart() {
+ DefaultMetricsSystem.shutdown(); // Clear pre-existing source names.
+ MetricsSystemImpl ms = new MetricsSystemImpl("test");
+ TestSource ts = new TestSource("ts");
+ ms.start();
+ ms.register("ts", "", ts);
+ MetricsSourceAdapter sa = ms.getSourceAdapter("ts");
+ assertNotNull(sa);
+ assertNotNull(sa.getMBeanName());
+ ms.stop();
+ ms.shutdown();
+ ms.start();
+ sa = ms.getSourceAdapter("ts");
+ assertNotNull(sa);
+ assertNotNull(sa.getMBeanName());
+ ms.stop();
+ ms.shutdown();
+ }
private void checkMetricsRecords(List<MetricsRecord> recs) {
LOG.debug(recs);