MAPREDUCE-3579. ConverterUtils shouldn't include a port in a path from a url without a port (Contributed by atm)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1215528 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Harsh J 2011-12-17 17:10:12 +00:00
parent 89553be90e
commit 2cf4aca02e
3 changed files with 49 additions and 2 deletions

View File

@ -331,6 +331,8 @@ Release 0.23.1 - Unreleased
before the job started, so that it works properly with oozie throughout
the job execution. (Robert Joseph Evans via vinodkv)
MAPREDUCE-3579. ConverterUtils shouldn't include a port in a path from a url without a port. (atm via harsh)
Release 0.23.0 - 2011-11-01
INCOMPATIBLE CHANGES

View File

@ -58,8 +58,15 @@ public class ConverterUtils {
*/
public static Path getPathFromYarnURL(URL url) throws URISyntaxException {
String scheme = url.getScheme() == null ? "" : url.getScheme();
String authority = url.getHost() != null ? url.getHost() + ":" + url.getPort()
: "";
String authority = "";
if (url.getHost() != null) {
authority = url.getHost();
if (url.getPort() > 0) {
authority += ":" + url.getPort();
}
}
return new Path(
(new URI(scheme, authority, url.getFile(), null, null)).normalize());
}

View File

@ -0,0 +1,38 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.util;
import static org.junit.Assert.*;
import java.net.URISyntaxException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.api.records.URL;
import org.junit.Test;
public class TestConverterUtils {
@Test
public void testConvertUrlWithNoPort() throws URISyntaxException {
Path expectedPath = new Path("hdfs://foo.com");
URL url = ConverterUtils.getYarnUrlFromPath(expectedPath);
Path actualPath = ConverterUtils.getPathFromYarnURL(url);
assertEquals(expectedPath, actualPath);
}
}