HDFS-5445. PacketReceiver populates the packetLen field in PacketHeader incorrectly (Jonathan Mace via Colin P. McCabe)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/26f3b6e8 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/26f3b6e8 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/26f3b6e8 Branch: refs/heads/HDFS-EC Commit: 26f3b6e88f47bedbf9cf77396bdabfbac66c7d31 Parents: db2abfc Author: Colin Patrick Mccabe <[email protected]> Authored: Mon Jan 12 17:11:03 2015 -0800 Committer: Zhe Zhang <[email protected]> Committed: Tue Jan 13 07:33:17 2015 -0800 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/protocol/datatransfer/PacketReceiver.java | 2 +- .../hadoop/hdfs/protocol/datatransfer/TestPacketReceiver.java | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/26f3b6e8/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index b57503a..487b209 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -679,6 +679,9 @@ Release 2.7.0 - UNRELEASED HDFS-7533. Datanode sometimes does not shutdown on receiving upgrade shutdown command (Eric Payne via kihwal) + HDFS-5445. PacketReceiver populates the packetLen field in PacketHeader + incorrectly (Jonathan Mace via Colin P. McCabe) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/26f3b6e8/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/datatransfer/PacketReceiver.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/datatransfer/PacketReceiver.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/datatransfer/PacketReceiver.java index 0de445c..3045a13 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/datatransfer/PacketReceiver.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/datatransfer/PacketReceiver.java @@ -178,7 +178,7 @@ public class PacketReceiver implements Closeable { if (curHeader == null) { curHeader = new PacketHeader(); } - curHeader.setFieldsFromData(dataPlusChecksumLen, headerBuf); + curHeader.setFieldsFromData(payloadLen, headerBuf); // Compute the sub-slices of the packet int checksumLen = dataPlusChecksumLen - curHeader.getDataLen(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/26f3b6e8/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/datatransfer/TestPacketReceiver.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/datatransfer/TestPacketReceiver.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/datatransfer/TestPacketReceiver.java index 6a87cdf..64ca3fa 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/datatransfer/TestPacketReceiver.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/datatransfer/TestPacketReceiver.java @@ -27,6 +27,8 @@ import org.apache.hadoop.hdfs.AppendTestUtil; import org.junit.Test; import org.mockito.Mockito; +import com.google.common.primitives.Ints; + import static org.junit.Assert.*; public class TestPacketReceiver { @@ -38,7 +40,7 @@ public class TestPacketReceiver { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); - int packetLen = data.length + sums.length + 4; + int packetLen = data.length + sums.length + Ints.BYTES; PacketHeader header = new PacketHeader( packetLen, OFFSET_IN_BLOCK, SEQNO, false, data.length, false); header.write(dos); @@ -87,6 +89,7 @@ public class TestPacketReceiver { PacketHeader header = pr.getHeader(); assertEquals(SEQNO, header.getSeqno()); assertEquals(OFFSET_IN_BLOCK, header.getOffsetInBlock()); + assertEquals(dataLen + checksumsLen + Ints.BYTES, header.getPacketLen()); // Mirror the packet to an output stream and make sure it matches // the packet we sent.
