fapifta commented on pull request #3579: URL: https://github.com/apache/hadoop/pull/3579#issuecomment-962377604
@symious I would say yes, and no :) We have 3 levels in the communication, the DfsClient which connects to HDFS, and is one of many users of the SASL protocol layer (SaslRpcClient), which uses the basic network communication layer the ipc client. (At least as I understand the system so far, so correct me if I am wrong.) In our problem scenario, we have two DfsClient which uses two separate SaslRpcClient, but under the hood they are using the same ipc client, as ipc clients are cached in the RpcEngine, regardless of whether we cache the DfsClient or not in a higher layer. Your suggestion is this as I understand: In order to distinguish between two DfsClient, we would need to add a client id into the ConnectionId in the ipc layer, which would distinguish between the users of the ipc client class inside the ipc client layer. This would require to add a bunch of new methods in the RpcEngine layer, to get the protobuf protocol proxies with a proper ConnectionId set, and may affect not just DfsClient, but every other client of the ipc client layer. I believe it is already unfortunate that the ipc layer decides and controls whether the SASL layer uses SASL or falls back to simple auth based communication, if we even add client ids from one more layer up, then the behaviour of the SASL layer would be defined by the layer above SASL via the layer under SASL that does not seem better at all. In my view, the high level client id does not, and should not distinguish between connections, the connection itself is a socket with one end on a port on the local machine, and the other end on a port on a remote machine. It does not really matter who uses the connection, also it should not really matter who uses the connection, until the user wants to use the connection between the two ports on the local and remote machine with the same settings. So if you look at it this way, the things in the equals method all qualify to differentiate between two connection, while the id of the user really does not. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
