Author: todd
Date: Mon May 7 21:34:38 2012
New Revision: 1335271
URL: http://svn.apache.org/viewvc?rev=1335271&view=rev
Log:
HDFS-3375. Put client name in DataXceiver thread name for readBlock and
keepalive. Contributed by Todd Lipcon.
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1335271&r1=1335270&r2=1335271&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
(original)
+++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
Mon May 7 21:34:38 2012
@@ -286,6 +286,9 @@ Release 2.0.0 - UNRELEASED
HDFS-3365. Enable users to disable socket caching in DFS client
configuration (todd)
+ HDFS-3375. Put client name in DataXceiver thread name for readBlock
+ and keepalive (todd)
+
OPTIMIZATIONS
HDFS-2477. Optimize computing the diff between a block report and the
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java?rev=1335271&r1=1335270&r2=1335271&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
Mon May 7 21:34:38 2012
@@ -85,6 +85,12 @@ class DataXceiver extends Receiver imple
private long opStartTime; //the start time of receiving an Op
private final SocketInputWrapper socketInputWrapper;
+
+ /**
+ * Client Name used in previous operation. Not available on first request
+ * on the socket.
+ */
+ private String previousOpClientName;
public static DataXceiver create(Socket s, DataNode dn,
DataXceiverServer dataXceiverServer) throws IOException {
@@ -122,7 +128,11 @@ class DataXceiver extends Receiver imple
*/
private void updateCurrentThreadName(String status) {
StringBuilder sb = new StringBuilder();
- sb.append("DataXceiver for client ").append(remoteAddress);
+ sb.append("DataXceiver for client ");
+ if (previousOpClientName != null) {
+ sb.append(previousOpClientName).append(" at ");
+ }
+ sb.append(remoteAddress);
if (status != null) {
sb.append(" [").append(status).append("]");
}
@@ -202,6 +212,8 @@ class DataXceiver extends Receiver imple
final String clientName,
final long blockOffset,
final long length) throws IOException {
+ previousOpClientName = clientName;
+
OutputStream baseStream = NetUtils.getOutputStream(s,
dnConf.socketWriteTimeout);
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(
@@ -295,7 +307,8 @@ class DataXceiver extends Receiver imple
final long maxBytesRcvd,
final long latestGenerationStamp,
DataChecksum requestedChecksum) throws IOException {
- updateCurrentThreadName("Receiving block " + block + " client=" +
clientname);
+ previousOpClientName = clientname;
+ updateCurrentThreadName("Receiving block " + block);
final boolean isDatanode = clientname.length() == 0;
final boolean isClient = !isDatanode;
final boolean isTransfer = stage == BlockConstructionStage.TRANSFER_RBW
@@ -502,7 +515,7 @@ class DataXceiver extends Receiver imple
final DatanodeInfo[] targets) throws IOException {
checkAccess(null, true, blk, blockToken,
Op.TRANSFER_BLOCK, BlockTokenSecretManager.AccessMode.COPY);
-
+ previousOpClientName = clientName;
updateCurrentThreadName(Op.TRANSFER_BLOCK + " " + blk);
final DataOutputStream out = new DataOutputStream(