Author: todd
Date: Tue Feb 14 19:47:18 2012
New Revision: 1244190
URL: http://svn.apache.org/viewvc?rev=1244190&view=rev
Log:
HADOOP-8071. Avoid an extra packet in client code when nagling is disabled.
Contributed by Todd Lipcon.
Modified:
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java
Modified:
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1244190&r1=1244189&r2=1244190&view=diff
==============================================================================
---
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt
Tue Feb 14 19:47:18 2012
@@ -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
Modified:
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java?rev=1244190&r1=1244189&r2=1244190&view=diff
==============================================================================
---
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java
(original)
+++
hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java
Tue Feb 14 19:47:18 2012
@@ -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) {