[ https://issues.apache.org/jira/browse/YARN-3749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14568492#comment-14568492 ]
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 {{YarnConfiguration#updateConnectAddr}}. 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 "yarn.nodemanager.localizer.address". 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 0.0.0.0:18032 > when RM failover. But I initially set > yarn.resourcemanager.address.rm1=0.0.0.0:18032, > yarn.resourcemanager.address.rm2=0.0.0.0:28032 After digging, I found it is > in ClientRMService where the value of yarn.resourcemanager.address.rm2 > changed to 0.0.0.0:18032. 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 (v6.3.4#6332)