Issue Details (XML | Word | Printable)

Key: HADOOP-4853
Type: Improvement Improvement
Status: Open Open
Priority: Major Major
Assignee: Arun C Murthy
Reporter: Arun C Murthy
Votes: 0
Watchers: 6
Operations

If you were logged in you would be able to see more operations.
Hadoop Common

Improvement to IPC

Created: 12/Dec/08 03:04 AM   Updated: 08/Jul/09 08:41 PM
Return to search
Component/s: ipc
Affects Version/s: 0.20.0
Fix Version/s: None

Time Tracking:
Not Specified

Issue Links:
Reference
 


 Description  « Hide
I'd like to propose an improvement for consideration given my experience of working on HADOOP-4348:

Currently the first call doubles up as a 'connection setup' trigger. I'd like to propose adding a new 'init' call which is always called by the clients for connection setup. The advantages are:

  • We could fold in the getProtocolVersion call into the setup call, this ensures that the Server always checks for protocol versions, regardless of whether the (malicious?) client does an explicit call for getProtocolVersion or not.
  • We could authorize the connection here.
  • We could add to check to ensure that the Server instance actually implements the protocol used by the client to communicate, rather than fail on the first IPC call

The flip side being an extra round-trip.

Lets discuss.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Steve Loughran added a comment - 12/Dec/08 10:29 AM
+1

Regarding the round trip, isn't there that feature of TCP whereby the server accepting the connection can include some data in the response; the first packet sent back after the connection is set up doesn't have to be empty. The server could include some version info and its part of the authentication process (a list of approved auth mechanisms and a seed value?).


Raghu Angadi added a comment - 12/Dec/08 07:54 PM
Currently it is a bug that client does not check for protocol version each time it re connects (with a new TCP connection). This would fix it, if "init" procedure is run for every new connection.. not just when the proxy object is explicitly initialized. In that sense, an implicit init is at the time of first RPC call (or any RPC subsequent call) is that right thing to do and user should always be prepared for such an exception.

Raghu Angadi added a comment - 12/Dec/08 08:07 PM
In other words, yes, it is good idea to make protocol check a part of connection establishment.