ソースを参照

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 年 前
コミット
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
     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

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

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