Author: vinodkv
Date: Tue Jan 14 00:01:35 2014
New Revision: 1557890
URL: http://svn.apache.org/r1557890
Log:
Forwarding YARN-321 branch to latest trunk.
svn merge ../../trunk/
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/CHANGES.txt
(contents, props changed)
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/
(props changed)
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ActiveStandbyElector.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/CompositeService.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigurationDeprecation.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/CHANGES.txt
Tue Jan 14 00:01:35 2014
@@ -415,6 +415,9 @@ Release 2.4.0 - UNRELEASED
HADOOP-10208. Remove duplicate initialization in
StringUtils.getStringCollection.
(Benoy Antony via jing9)
+ HADOOP-9420. Add percentile or max metric for rpcQueueTime, processing
time.
+ (Liang Xie via wang)
+
OPTIMIZATIONS
HADOOP-9748. Reduce blocking on UGI.ensureInitialized (daryn)
@@ -505,6 +508,12 @@ Release 2.4.0 - UNRELEASED
HADOOP-10207. TestUserGroupInformation#testLogin is flaky (jxiang via
cmccabe)
+ HADOOP-10214. Fix multithreaded correctness warnings in
ActiveStandbyElector
+ (Liang Xie via kasha)
+
+ HADOOP-10223. MiniKdc#main() should close the FileReader it creates.
+ (Ted Yu via tucu)
+
Release 2.3.0 - UNRELEASED
INCOMPATIBLE CHANGES
@@ -590,6 +599,9 @@ Release 2.3.0 - UNRELEASED
HADOOP-10193. hadoop-auth's PseudoAuthenticationHandler can consume
getInputStream.
(gchanan via tucu)
+ HADOOP-10178. Configuration deprecation always emit "deprecated" warnings
+ when a new key is used. (Shanyu Zhao via cnauroth)
+
Release 2.2.0 - 2013-10-13
INCOMPATIBLE CHANGES
Propchange:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/CHANGES.txt
------------------------------------------------------------------------------
Merged
/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt:r1556680-1557889
Propchange:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/
------------------------------------------------------------------------------
Merged
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java:r1556680-1557889
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
Tue Jan 14 00:01:35 2014
@@ -553,36 +553,6 @@ public class Configuration implements It
}
/**
- * Returns the alternate name for a key if the property name is deprecated
- * or if deprecates a property name.
- *
- * @param name property name.
- * @return alternate name.
- */
- private String[] getAlternateNames(String name) {
- String altNames[] = null;
- DeprecationContext cur = deprecationContext.get();
- DeprecatedKeyInfo keyInfo = cur.getDeprecatedKeyMap().get(name);
- if (keyInfo == null) {
- altNames = (cur.getReverseDeprecatedKeyMap().get(name) != null ) ?
- new String [] {cur.getReverseDeprecatedKeyMap().get(name)} : null;
- if(altNames != null && altNames.length > 0) {
- //To help look for other new configs for this deprecated config
- keyInfo = cur.getDeprecatedKeyMap().get(altNames[0]);
- }
- }
- if(keyInfo != null && keyInfo.newKeys.length > 0) {
- List<String> list = new ArrayList<String>();
- if(altNames != null) {
- list.addAll(Arrays.asList(altNames));
- }
- list.addAll(Arrays.asList(keyInfo.newKeys));
- altNames = list.toArray(new String[list.size()]);
- }
- return altNames;
- }
-
- /**
* Checks for the presence of the property <code>name</code> in the
* deprecation map. Returns the first of the list of new keys if present
* in the deprecation map or the <code>name</code> itself. If the property
@@ -933,6 +903,37 @@ public class Configuration implements It
return result;
}
+ /**
+ * Returns alternative names (non-deprecated keys or previously-set
deprecated keys)
+ * for a given non-deprecated key.
+ * If the given key is deprecated, return null.
+ *
+ * @param name property name.
+ * @return alternative names.
+ */
+ private String[] getAlternativeNames(String name) {
+ String altNames[] = null;
+ DeprecatedKeyInfo keyInfo = null;
+ DeprecationContext cur = deprecationContext.get();
+ String depKey = cur.getReverseDeprecatedKeyMap().get(name);
+ if(depKey != null) {
+ keyInfo = cur.getDeprecatedKeyMap().get(depKey);
+ if(keyInfo.newKeys.length > 0) {
+ if(getProps().containsKey(depKey)) {
+ //if deprecated key is previously set explicitly
+ List<String> list = new ArrayList<String>();
+ list.addAll(Arrays.asList(keyInfo.newKeys));
+ list.add(depKey);
+ altNames = list.toArray(new String[list.size()]);
+ }
+ else {
+ altNames = keyInfo.newKeys;
+ }
+ }
+ }
+ return altNames;
+ }
+
/**
* Set the <code>value</code> of the <code>name</code> property. If
* <code>name</code> is deprecated or there is a deprecated name associated
to it,
@@ -947,9 +948,9 @@ public class Configuration implements It
/**
* Set the <code>value</code> of the <code>name</code> property. If
- * <code>name</code> is deprecated or there is a deprecated name associated
to it,
- * it sets the value to both names.
- *
+ * <code>name</code> is deprecated, it also sets the <code>value</code> to
+ * the keys that replace the deprecated key.
+ *
* @param name property name.
* @param value property value.
* @param source the place that this configuration value came from
@@ -969,23 +970,30 @@ public class Configuration implements It
}
getOverlay().setProperty(name, value);
getProps().setProperty(name, value);
- if(source == null) {
- updatingResource.put(name, new String[] {"programatically"});
- } else {
- updatingResource.put(name, new String[] {source});
+ String newSource = (source == null ? "programatically" : source);
+
+ if (!isDeprecated(name)) {
+ updatingResource.put(name, new String[] {newSource});
+ String[] altNames = getAlternativeNames(name);
+ if(altNames != null) {
+ for(String n: altNames) {
+ if(!n.equals(name)) {
+ getOverlay().setProperty(n, value);
+ getProps().setProperty(n, value);
+ updatingResource.put(n, new String[] {newSource});
+ }
+ }
+ }
}
- String[] altNames = getAlternateNames(name);
- if (altNames != null && altNames.length > 0) {
+ else {
+ String[] names = handleDeprecation(deprecationContext.get(), name);
String altSource = "because " + name + " is deprecated";
- for(String altName : altNames) {
- if(!altName.equals(name)) {
- getOverlay().setProperty(altName, value);
- getProps().setProperty(altName, value);
- updatingResource.put(altName, new String[] {altSource});
- }
+ for(String n : names) {
+ getOverlay().setProperty(n, value);
+ getProps().setProperty(n, value);
+ updatingResource.put(n, new String[] {altSource});
}
}
- warnOnceIfDeprecated(deprecations, name);
}
private void warnOnceIfDeprecated(DeprecationContext deprecations, String
name) {
@@ -999,15 +1007,21 @@ public class Configuration implements It
* Unset a previously set property.
*/
public synchronized void unset(String name) {
- String[] altNames = getAlternateNames(name);
- getOverlay().remove(name);
- getProps().remove(name);
- if (altNames !=null && altNames.length > 0) {
- for(String altName : altNames) {
- getOverlay().remove(altName);
- getProps().remove(altName);
+ String[] names = null;
+ if (!isDeprecated(name)) {
+ names = getAlternativeNames(name);
+ if(names == null) {
+ names = new String[]{name};
}
}
+ else {
+ names = handleDeprecation(deprecationContext.get(), name);
+ }
+
+ for(String n: names) {
+ getOverlay().remove(n);
+ getProps().remove(n);
+ }
}
/**
@@ -2600,4 +2614,18 @@ public class Configuration implements It
System.out.println(entry.getKey() + "\t" + newKeys.toString());
}
}
+
+ /**
+ * Returns whether or not a deprecated name has been warned. If the name is
not
+ * deprecated then always return false
+ */
+ public static boolean hasWarnedDeprecation(String name) {
+ DeprecationContext deprecations = deprecationContext.get();
+ if(deprecations.getDeprecatedKeyMap().containsKey(name)) {
+ if(deprecations.getDeprecatedKeyMap().get(name).accessed.get()) {
+ return true;
+ }
+ }
+ return false;
+ }
}
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
Tue Jan 14 00:01:35 2014
@@ -242,4 +242,9 @@ public class CommonConfigurationKeys ext
public static final String HADOOP_USER_GROUP_METRICS_PERCENTILES_INTERVALS =
"hadoop.user.group.metrics.percentiles.intervals";
+
+ public static final String RPC_METRICS_QUANTILE_ENABLE =
+ "rpc.metrics.quantile.enable";
+ public static final String RPC_METRICS_PERCENTILES_INTERVALS_KEY =
+ "rpc.metrics.percentiles.intervals";
}
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ActiveStandbyElector.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ActiveStandbyElector.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ActiveStandbyElector.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ActiveStandbyElector.java
Tue Jan 14 00:01:35 2014
@@ -768,7 +768,7 @@ public class ActiveStandbyElector implem
}
@InterfaceAudience.Private
- public void terminateConnection() {
+ public synchronized void terminateConnection() {
if (zkClient == null) {
return;
}
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java
Tue Jan 14 00:01:35 2014
@@ -2193,7 +2193,7 @@ public abstract class Server {
listener = new Listener();
this.port = listener.getAddress().getPort();
connectionManager = new ConnectionManager();
- this.rpcMetrics = RpcMetrics.create(this);
+ this.rpcMetrics = RpcMetrics.create(this, conf);
this.rpcDetailedMetrics = RpcDetailedMetrics.create(this.port);
this.tcpNoDelay = conf.getBoolean(
CommonConfigurationKeysPublic.IPC_SERVER_TCPNODELAY_KEY,
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java
Tue Jan 14 00:01:35 2014
@@ -19,14 +19,17 @@ package org.apache.hadoop.ipc.metrics;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.fs.CommonConfigurationKeys;
import org.apache.hadoop.ipc.Server;
import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.metrics2.annotation.Metric;
import org.apache.hadoop.metrics2.annotation.Metrics;
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.hadoop.metrics2.lib.MetricsRegistry;
import org.apache.hadoop.metrics2.lib.MutableCounterInt;
import org.apache.hadoop.metrics2.lib.MutableCounterLong;
+import org.apache.hadoop.metrics2.lib.MutableQuantiles;
import org.apache.hadoop.metrics2.lib.MutableRate;
/**
@@ -41,26 +44,48 @@ public class RpcMetrics {
final Server server;
final MetricsRegistry registry;
final String name;
+ final boolean rpcQuantileEnable;
- RpcMetrics(Server server) {
+ RpcMetrics(Server server, Configuration conf) {
String port = String.valueOf(server.getListenerAddress().getPort());
- name = "RpcActivityForPort"+ port;
+ name = "RpcActivityForPort" + port;
this.server = server;
registry = new MetricsRegistry("rpc").tag("port", "RPC port", port);
- LOG.debug("Initialized "+ registry);
+ int[] intervals = conf.getInts(
+ CommonConfigurationKeys.RPC_METRICS_PERCENTILES_INTERVALS_KEY);
+ rpcQuantileEnable = (intervals.length > 0) && conf.getBoolean(
+ CommonConfigurationKeys.RPC_METRICS_QUANTILE_ENABLE, false);
+ if (rpcQuantileEnable) {
+ rpcQueueTimeMillisQuantiles =
+ new MutableQuantiles[intervals.length];
+ rpcProcessingTimeMillisQuantiles =
+ new MutableQuantiles[intervals.length];
+ for (int i = 0; i < intervals.length; i++) {
+ int interval = intervals[i];
+ rpcQueueTimeMillisQuantiles[i] = registry.newQuantiles("rpcQueueTime"
+ + interval + "s", "rpc queue time in milli second", "ops",
+ "latency", interval);
+ rpcProcessingTimeMillisQuantiles[i] = registry.newQuantiles(
+ "rpcProcessingTime" + interval + "s",
+ "rpc processing time in milli second", "ops", "latency", interval);
+ }
+ }
+ LOG.debug("Initialized " + registry);
}
public String name() { return name; }
- public static RpcMetrics create(Server server) {
- RpcMetrics m = new RpcMetrics(server);
+ public static RpcMetrics create(Server server, Configuration conf) {
+ RpcMetrics m = new RpcMetrics(server, conf);
return DefaultMetricsSystem.instance().register(m.name, null, m);
}
@Metric("Number of received bytes") MutableCounterLong receivedBytes;
@Metric("Number of sent bytes") MutableCounterLong sentBytes;
@Metric("Queue time") MutableRate rpcQueueTime;
+ MutableQuantiles[] rpcQueueTimeMillisQuantiles;
@Metric("Processsing time") MutableRate rpcProcessingTime;
+ MutableQuantiles[] rpcProcessingTimeMillisQuantiles;
@Metric("Number of authentication failures")
MutableCounterInt rpcAuthenticationFailures;
@Metric("Number of authentication successes")
@@ -146,6 +171,11 @@ public class RpcMetrics {
//@Override
public void addRpcQueueTime(int qTime) {
rpcQueueTime.add(qTime);
+ if (rpcQuantileEnable) {
+ for (MutableQuantiles q : rpcQueueTimeMillisQuantiles) {
+ q.add(qTime);
+ }
+ }
}
/**
@@ -155,5 +185,10 @@ public class RpcMetrics {
//@Override
public void addRpcProcessingTime(int processingTime) {
rpcProcessingTime.add(processingTime);
+ if (rpcQuantileEnable) {
+ for (MutableQuantiles q : rpcProcessingTimeMillisQuantiles) {
+ q.add(processingTime);
+ }
+ }
}
}
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/CompositeService.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/CompositeService.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/CompositeService.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/service/CompositeService.java
Tue Jan 14 00:01:35 2014
@@ -95,7 +95,7 @@ public class CompositeService extends Ab
protected synchronized boolean removeService(Service service) {
synchronized (serviceList) {
- return serviceList.add(service);
+ return serviceList.remove(service);
}
}
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigurationDeprecation.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigurationDeprecation.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigurationDeprecation.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigurationDeprecation.java
Tue Jan 14 00:01:35 2014
@@ -26,6 +26,7 @@ import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.ByteArrayOutputStream;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -399,4 +400,30 @@ public class TestConfigurationDeprecatio
Uninterruptibles.getUninterruptibly(future);
}
}
+
+ @Test
+ public void testNoFalseDeprecationWarning() throws IOException {
+ Configuration conf = new Configuration();
+ Configuration.addDeprecation("AA", "BB");
+ conf.set("BB", "bb");
+ conf.get("BB");
+ conf.writeXml(new ByteArrayOutputStream());
+ assertEquals(false, Configuration.hasWarnedDeprecation("AA"));
+ conf.set("AA", "aa");
+ assertEquals(true, Configuration.hasWarnedDeprecation("AA"));
+ }
+
+ @Test
+ public void testDeprecationSetUnset() throws IOException {
+ addDeprecationToConfiguration();
+ Configuration conf = new Configuration();
+ //"X" is deprecated by "Y" and "Z"
+ conf.set("Y", "y");
+ assertEquals("y", conf.get("Z"));
+ conf.set("X", "x");
+ assertEquals("x", conf.get("Z"));
+ conf.unset("Y");
+ assertEquals(null, conf.get("Z"));
+ assertEquals(null, conf.get("X"));
+ }
}
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java
Tue Jan 14 00:01:35 2014
@@ -20,6 +20,7 @@ package org.apache.hadoop.ipc;
import static org.apache.hadoop.test.MetricsAsserts.assertCounter;
import static org.apache.hadoop.test.MetricsAsserts.assertCounterGt;
+import static org.apache.hadoop.test.MetricsAsserts.getLongCounter;
import static org.apache.hadoop.test.MetricsAsserts.getMetrics;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
@@ -67,6 +68,7 @@ import org.apache.hadoop.security.author
import org.apache.hadoop.security.authorize.Service;
import org.apache.hadoop.security.token.SecretManager;
import org.apache.hadoop.security.token.TokenIdentifier;
+import org.apache.hadoop.test.MetricsAsserts;
import org.apache.hadoop.test.MockitoUtil;
import org.junit.Before;
import org.junit.Test;
@@ -961,6 +963,44 @@ public class TestRPC {
}
}
+ @Test
+ public void testRpcMetrics() throws Exception {
+ Configuration configuration = new Configuration();
+ final int interval = 1;
+ configuration.setBoolean(CommonConfigurationKeys.
+ RPC_METRICS_QUANTILE_ENABLE, true);
+ configuration.set(CommonConfigurationKeys.
+ RPC_METRICS_PERCENTILES_INTERVALS_KEY, "" + interval);
+ final Server server = new RPC.Builder(configuration)
+ .setProtocol(TestProtocol.class).setInstance(new TestImpl())
+ .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true)
+ .build();
+ server.start();
+ final TestProtocol proxy = RPC.getProxy(TestProtocol.class,
+ TestProtocol.versionID, server.getListenerAddress(), configuration);
+ try {
+ for (int i=0; i<1000; i++) {
+ proxy.ping();
+ proxy.echo("" + i);
+ }
+ MetricsRecordBuilder rpcMetrics =
+ getMetrics(server.getRpcMetrics().name());
+ assertTrue("Expected non-zero rpc queue time",
+ getLongCounter("RpcQueueTimeNumOps", rpcMetrics) > 0);
+ assertTrue("Expected non-zero rpc processing time",
+ getLongCounter("RpcProcessingTimeNumOps", rpcMetrics) > 0);
+ MetricsAsserts.assertQuantileGauges("RpcQueueTime" + interval + "s",
+ rpcMetrics);
+ MetricsAsserts.assertQuantileGauges("RpcProcessingTime" + interval + "s",
+ rpcMetrics);
+ } finally {
+ if (proxy != null) {
+ RPC.stopProxy(proxy);
+ }
+ server.stop();
+ }
+ }
+
public static void main(String[] args) throws IOException {
new TestRPC().testCallsInternal(conf);
Modified:
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java?rev=1557890&r1=1557889&r2=1557890&view=diff
==============================================================================
---
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
(original)
+++
hadoop/common/branches/YARN-321/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
Tue Jan 14 00:01:35 2014
@@ -125,7 +125,15 @@ public class MiniKdc {
+ file.getAbsolutePath());
}
Properties userConf = new Properties();
- userConf.load(new FileReader(file));
+ FileReader r = null;
+ try {
+ r = new FileReader(file);
+ userConf.load(r);
+ } finally {
+ if (r != null) {
+ r.close();
+ }
+ }
for (Map.Entry entry : userConf.entrySet()) {
conf.put(entry.getKey(), entry.getValue());
}