[ 
https://issues.apache.org/jira/browse/HDFS-10544?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhe Zhang updated HDFS-10544:
-----------------------------
    Attachment: HDFS-10544.03.patch

Thought more about the two options. I think we should use the simpler approach 
of throwing {{IllegalArgumentException}} before checking if the proxy provider 
works with logical Uris. This is because no matter if the config uses 
{{ConfiguredFailoverProxyProvider}} or {{IPFailoverProxyProvider}}, a legal URI 
is needed by the constructor. So it's actually a valid requirement that 
{{nsId}} can form a legal URI.

Also updating the unit test {{TestDFSUtil}}. Basically, 2 of the tests were 
using logical URIs without specifying a {{FailoverProxyProvider}}. With such a 
config, the correct behavior of {{DFSUtil#getInternalNameServices}} is to try 
to resolve the logical URI, instead of waiting for the proxy provider to do so. 
But in those 2 tests, the config doesn't have the correct 
{{dfs.namenode.servicerpc-address}} entries to resolve the logical URIs.

> Balancer doesn't work with IPFailoverProxyProvider
> --------------------------------------------------
>
>                 Key: HDFS-10544
>                 URL: https://issues.apache.org/jira/browse/HDFS-10544
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: Zhe Zhang
>            Assignee: Zhe Zhang
>         Attachments: HDFS-10544.00.patch, HDFS-10544.01.patch, 
> HDFS-10544.02.patch, HDFS-10544.03.patch
>
>
> Right now {{Balancer}} gets the NN URIs through 
> {{DFSUtil#getNameServiceUris}}, which returns logical URIs in HA is enabled. 
> If {{IPFailoverProxyProvider}} is used, {{Balancer}} will not be able to 
> start.
> I think the bug is at {{DFSUtil#getNameServiceUris}}:
> {code}
>     for (String nsId : getNameServiceIds(conf)) {
>       if (HAUtil.isHAEnabled(conf, nsId)) {
>         // Add the logical URI of the nameservice.
>         try {
>           ret.add(new URI(HdfsConstants.HDFS_URI_SCHEME + "://" + nsId));
> {code}
> Then {{if}} clause should also consider if the {{FailoverProxyProvider}} has 
> {{useLogicalURI}} enabled. If not, {{getNameServiceUris}} should try to 
> resolve the physical URI for this nsId.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to