From 6fe9bd2e6878e944f5c3ca8ecd82a5575517b6f6 Mon Sep 17 00:00:00 2001 From: Todd Lipcon Date: Tue, 14 Feb 2012 19:47:18 +0000 Subject: [PATCH] HADOOP-8071. Avoid an extra packet in client code when nagling is disabled. Contributed by Todd Lipcon. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1244190 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-common-project/hadoop-common/CHANGES.txt | 2 ++ .../src/main/java/org/apache/hadoop/ipc/Client.java | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 28ce5161aa2..93f5182dbc6 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -14,6 +14,8 @@ Release 0.23.2 - UNRELEASED (szetszwo) OPTIMIZATIONS + HADOOP-8071. Avoid an extra packet in client code when nagling is + disabled. (todd) BUG FIXES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java index 6d0b4dfed89..e3a4baf1168 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java @@ -788,12 +788,16 @@ public class Client { //for serializing the //data to be written d = new DataOutputBuffer(); + d.writeInt(0); // placeholder for data length d.writeInt(call.id); call.param.write(d); byte[] data = d.getData(); - int dataLength = d.getLength(); - out.writeInt(dataLength); //first put the data length - out.write(data, 0, dataLength);//write the data + int dataLength = d.getLength() - 4; + data[0] = (byte)((dataLength >>> 24) & 0xff); + data[1] = (byte)((dataLength >>> 16) & 0xff); + data[2] = (byte)((dataLength >>> 8) & 0xff); + data[3] = (byte)(dataLength & 0xff); + out.write(data, 0, dataLength + 4);//write the data out.flush(); } } catch(IOException e) {