zhihai xu commented on YARN-3749:

[~iwasakims], thanks for the finding and explanations!
[~chenchun], thanks for updating the patch!
After looking deeper into the code, I am more convinced this is a bug in 
IMHO, we should change {{if (HAUtil.isHAEnabled(this))}} to {{if 
(HAUtil.isHAEnabled(this) && getServiceAddressConfKeys(this).contains(name))}}
to match the code in {{YarnConfiguration#getSocketAddr}}. It doesn't sound 
right to add RM_HA_ID suffix to NM service address 
"yarn.nodemanager.localizer.address". Also there will be a problem if we call 
{{getSocketAddr}} after {{updateConnectAddr}} for address Property 
I think we can fix the HadoopIllegalArgumentException with this change.

> We should make a copy of configuration when init MiniYARNCluster with 
> multiple RMs
> ----------------------------------------------------------------------------------
>                 Key: YARN-3749
>                 URL: https://issues.apache.org/jira/browse/YARN-3749
>             Project: Hadoop YARN
>          Issue Type: Bug
>            Reporter: Chun Chen
>            Assignee: Chun Chen
>         Attachments: YARN-3749.2.patch, YARN-3749.3.patch, YARN-3749.4.patch, 
> YARN-3749.5.patch, YARN-3749.patch
> When I was trying to write a test case for YARN-2674, I found DS client 
> trying to connect to both rm1 and rm2 with the same address 
> when RM failover. But I initially set 
> yarn.resourcemanager.address.rm1=, 
> yarn.resourcemanager.address.rm2=  After digging, I found it is 
> in ClientRMService where the value of yarn.resourcemanager.address.rm2 
> changed to See the following code in ClientRMService:
> {code}
> clientBindAddress = conf.updateConnectAddr(YarnConfiguration.RM_BIND_HOST,
>                                                YarnConfiguration.RM_ADDRESS,
> YarnConfiguration.DEFAULT_RM_ADDRESS,
>                                                server.getListenerAddress());
> {code}
> Since we use the same instance of configuration in rm1 and rm2 and init both 
> RM before we start both RM, we will change yarn.resourcemanager.ha.id to rm2 
> during init of rm2 and yarn.resourcemanager.ha.id will become rm2 during 
> starting of rm1.
> So I think it is safe to make a copy of configuration when init both of the 
> rm.

This message was sent by Atlassian JIRA

Reply via email to