[ 
https://issues.apache.org/jira/browse/HADOOP-18346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17576953#comment-17576953
 ] 

Shawn commented on HADOOP-18346:
--------------------------------

Seems we already have a JIRA for this issue

> Suggest to update the IP address of ConnectionId when server of Connection 
> got updated
> --------------------------------------------------------------------------------------
>
>                 Key: HADOOP-18346
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18346
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: hdfs-client
>    Affects Versions: 3.3.1
>            Reporter: Shawn
>            Priority: Critical
>
> When use ProtobufRpcEngine to get RPC proxy, we apply the InetSocketAddress 
> addr, and this address is then kept in the ConnectionId (see 
> [here|https://github.com/apache/hadoop/blob/rel/release-3.3.1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngine.java#L139]
>  and 
> [here|https://github.com/apache/hadoop/blob/rel/release-3.3.1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java#L1681]).
> When the destination IP of the connection changes, we have code to update the 
> server variable in the connection (see 
> [here|https://github.com/apache/hadoop/blob/rel/release-3.3.1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java#L641]).
>  This makes the retry of the connection to succeed. 
> However, the above logic only temporary fix the connection. After the RPC 
> call of the client, the connection will be closed. Next time when we use the 
> same proxy to do the RPC call, we will again to fail the first connection and 
> succeed the second one after the server IP got updates. 
> My suggestion is to not only update the server variable in the connection, 
> but also update the address of the ConnectionId in the Invoker. This way, we 
> can reuse the proxy with the latest IP address.
> The use case for this is: in Apache ozone project, we initialize the RPC 
> proxy with a fixed InetSocketAddress (for example, datanode needs to set up 
> the RPC proxy to scm). But if lately the server IP changes (e.g. in k8s, the 
> IP of a pod is very likely to change), every time the proxy needs two calls 
> (1st fails and the 2nd succeeds with the updated IP). By using the above 
> solution, we can eliminate this issue.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to