Author: eli Date: Fri May 18 04:20:28 2012 New Revision: 1339970 URL: http://svn.apache.org/viewvc?rev=1339970&view=rev Log: HADOOP-8408. MR doesn't work with a non-default ViewFS mount table and security enabled. Contributed by Aaron T. Myers
Added: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1339970&r1=1339969&r2=1339970&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Fri May 18 04:20:28 2012 @@ -183,6 +183,9 @@ Release 2.0.1-alpha - UNRELEASED HADOOP-8287. etc/hadoop is missing hadoop-env.sh (eli) + HADOOP-8408. MR doesn't work with a non-default ViewFS mount table + and security enabled. (atm via eli) + Release 2.0.0-alpha - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java?rev=1339970&r1=1339969&r2=1339970&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java Fri May 18 04:20:28 2012 @@ -233,6 +233,11 @@ public class ViewFileSystem extends File fsState.resolve(getUriPath(f), true); return res.isInternalDir() ? null : res.targetFileSystem.getHomeDirectory(); } + + @Override + public String getCanonicalServiceName() { + return getUri().getHost(); + } @Override public URI getUri() { Added: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java?rev=1339970&view=auto ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java (added) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java Fri May 18 04:20:28 2012 @@ -0,0 +1,73 @@ +/** + * 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.fs.viewfs; + +import static org.junit.Assert.*; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.FsConstants; +import org.junit.Test; + +/** + * Test ViewFileSystem's support for having delegation tokens fetched and cached + * for the file system. + */ +public class TestViewFileSystemDelegationTokenSupport { + + private static final String MOUNT_TABLE_NAME = "vfs-cluster"; + + /** + * Ensure that a canonical service name can be determined for ViewFileSystem + * instances configured with a non-default mount table name. + * + * Regression test for HADOOP-8408. + */ + @Test + public void testGetCanonicalServiceNameWithNonDefaultMountTable() + throws URISyntaxException, IOException { + + Configuration conf = new Configuration(); + ConfigUtil.addLink(conf, MOUNT_TABLE_NAME, "/user", new URI("file:///")); + + FileSystem viewFs = FileSystem.get(new URI(FsConstants.VIEWFS_SCHEME + + "://" + MOUNT_TABLE_NAME), conf); + + String serviceName = viewFs.getCanonicalServiceName(); + assertNotNull(serviceName); + assertEquals(MOUNT_TABLE_NAME, serviceName); + } + + @Test + public void testGetCanonicalServiceNameWithDefaultMountTable() + throws URISyntaxException, IOException { + + Configuration conf = new Configuration(); + ConfigUtil.addLink(conf, "/user", new URI("file:///")); + + FileSystem viewFs = FileSystem.get(FsConstants.VIEWFS_URI, conf); + + String serviceName = viewFs.getCanonicalServiceName(); + assertNull(serviceName); + } + +}