From c6cafc77e697317dad0708309b67b900a2e3a413 Mon Sep 17 00:00:00 2001 From: Jing Zhao Date: Fri, 2 Oct 2015 11:08:17 -0700 Subject: [PATCH] HDFS-9185. Fix null tracer in ErasureCodingWorker. Contributed by Rakesh R. --- .../org/apache/hadoop/hdfs/util/StripedBlockUtil.java | 5 ++++- hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 2 ++ .../apache/hadoop/hdfs/server/datanode/BlockSender.java | 2 +- .../org/apache/hadoop/hdfs/server/datanode/DataNode.java | 6 +++++- .../apache/hadoop/hdfs/server/datanode/DataXceiver.java | 2 +- .../server/datanode/erasurecode/ErasureCodingWorker.java | 4 +--- .../org/apache/hadoop/hdfs/TestRecoverStripedFile.java | 9 +++++++-- 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/util/StripedBlockUtil.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/util/StripedBlockUtil.java index 264c532243..9153745189 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/util/StripedBlockUtil.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/util/StripedBlockUtil.java @@ -222,11 +222,14 @@ public class StripedBlockUtil { } } catch (ExecutionException e) { if (DFSClient.LOG.isDebugEnabled()) { - DFSClient.LOG.debug("ExecutionException " + e); + DFSClient.LOG.debug("Exception during striped read task", e); } return new StripingChunkReadResult(futures.remove(future), StripingChunkReadResult.FAILED); } catch (CancellationException e) { + if (DFSClient.LOG.isDebugEnabled()) { + DFSClient.LOG.debug("Exception during striped read task", e); + } return new StripingChunkReadResult(futures.remove(future), StripingChunkReadResult.CANCELLED); } diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt index 6a01d616f9..c9f82c0e51 100755 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt @@ -453,3 +453,5 @@ HDFS-9040. Erasure coding: coordinate data streamers in DFSStripedOutputStream. (jing9 and Walter Su) + + HDFS-9185. Fix null tracer in ErasureCodingWorker. (Rakesh R via jing9) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java index 816eec439f..69790a6df0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java @@ -707,7 +707,7 @@ class BlockSender implements java.io.Closeable { */ long sendBlock(DataOutputStream out, OutputStream baseStream, DataTransferThrottler throttler) throws IOException { - TraceScope scope = datanode.tracer. + final TraceScope scope = datanode.getTracer(). newScope("sendBlock_" + block.getBlockId()); try { return doSendBlock(out, baseStream, throttler); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java index 10a8a9c814..63b8847f49 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java @@ -369,7 +369,7 @@ public class DataNode extends ReconfigurableBase private boolean isPermissionEnabled; private String dnUserName = null; private ErasureCodingWorker ecWorker; - final Tracer tracer; + private final Tracer tracer; private final TracerConfigurationManager tracerConfigurationManager; private static final int NUM_CORES = Runtime.getRuntime() .availableProcessors(); @@ -3395,4 +3395,8 @@ public class DataNode extends ReconfigurableBase ScheduledThreadPoolExecutor getMetricsLoggerTimer() { return metricsLoggerTimer; } + + public Tracer getTracer() { + return tracer; + } } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java index b5d8f4f25e..91664ce32a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java @@ -126,7 +126,7 @@ class DataXceiver extends Receiver implements Runnable { private DataXceiver(Peer peer, DataNode datanode, DataXceiverServer dataXceiverServer) throws IOException { - super(datanode.tracer); + super(datanode.getTracer()); this.peer = peer; this.dnConf = datanode.getDnConf(); this.socketIn = peer.getInputStream(); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java index 7c64b37d44..0637c18e37 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java @@ -50,11 +50,9 @@ import org.apache.hadoop.fs.StorageType; import org.apache.hadoop.hdfs.BlockReader; import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.DFSPacket; -import org.apache.hadoop.hdfs.DFSUtil; import org.apache.hadoop.hdfs.DFSUtilClient; import org.apache.hadoop.hdfs.RemoteBlockReader2; import org.apache.hadoop.hdfs.net.Peer; -import org.apache.hadoop.hdfs.net.TcpPeerServer; import org.apache.hadoop.hdfs.protocol.DatanodeID; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; import org.apache.hadoop.hdfs.protocol.ExtendedBlock; @@ -818,7 +816,7 @@ public final class ErasureCodingWorker { "dummy", block, blockToken, offsetInBlock, block.getNumBytes() - offsetInBlock, true, "", newConnectedPeer(block, dnAddr, blockToken, dnInfo), dnInfo, - null, cachingStrategy, null); + null, cachingStrategy, datanode.getTracer()); } catch (IOException e) { return null; } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestRecoverStripedFile.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestRecoverStripedFile.java index 75dc6a02ac..ec7594fc52 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestRecoverStripedFile.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestRecoverStripedFile.java @@ -38,7 +38,6 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.protocol.DatanodeID; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; import org.apache.hadoop.hdfs.protocol.ExtendedBlock; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.protocol.LocatedBlocks; import org.apache.hadoop.hdfs.protocol.LocatedStripedBlock; import org.apache.hadoop.hdfs.server.blockmanagement.BlockManagerTestUtil; @@ -50,6 +49,8 @@ import org.apache.hadoop.hdfs.server.namenode.NameNodeAdapter; import org.apache.hadoop.hdfs.server.protocol.DatanodeStorage; import org.apache.hadoop.hdfs.server.protocol.BlockECRecoveryCommand.BlockECRecoveryInfo; import org.apache.hadoop.hdfs.util.StripedBlockUtil; +import org.apache.hadoop.test.GenericTestUtils; +import org.apache.log4j.Level; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -64,7 +65,11 @@ public class TestRecoverStripedFile { private static final int blockSize = cellSize * 3; private static final int groupSize = dataBlkNum + parityBlkNum; private static final int dnNum = groupSize + parityBlkNum; - + + static { + GenericTestUtils.setLogLevel(DFSClient.LOG, Level.ALL); + } + private MiniDFSCluster cluster; private Configuration conf; private DistributedFileSystem fs;