Browse Source

merge MAPREDUCE-3579

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1215534 13f79535-47bb-0310-9956-ffa450edef68
Harsh J 13 years ago
parent
commit
b12d8f3c7c

+ 2 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -282,6 +282,8 @@ Release 0.23.1 - Unreleased
     before the job started, so that it works properly with oozie throughout
     before the job started, so that it works properly with oozie throughout
     the job execution. (Robert Joseph Evans via vinodkv)
     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 
 Release 0.23.0 - 2011-11-01 
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 9 - 2
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java

@@ -58,8 +58,15 @@ public class ConverterUtils {
    */
    */
   public static Path getPathFromYarnURL(URL url) throws URISyntaxException {
   public static Path getPathFromYarnURL(URL url) throws URISyntaxException {
     String scheme = url.getScheme() == null ? "" : url.getScheme();
     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(
     return new Path(
         (new URI(scheme, authority, url.getFile(), null, null)).normalize());
         (new URI(scheme, authority, url.getFile(), null, null)).normalize());
   }
   }

+ 38 - 0
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java

@@ -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);
+  }
+
+}