Merge -r 1423823:1423824 from trunk to branch-2. Fixes: HADOOP-9153. Support createNonRecursive in ViewFileSystem. Contributed by Sandy Ryza.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1423825 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
50a515b45b
commit
1331c75ec0
|
@ -205,6 +205,9 @@ Release 2.0.3-alpha - Unreleased
|
|||
HADOOP-9152. HDFS can report negative DFS Used on clusters with very small
|
||||
amounts of data. (Brock Noland via atm)
|
||||
|
||||
HADOOP-9153. Support createNonRecursive in ViewFileSystem.
|
||||
(Sandy Ryza via tomwhite)
|
||||
|
||||
Release 2.0.2-alpha - 2012-09-07
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -166,6 +166,18 @@ public class FilterFileSystem extends FileSystem {
|
|||
return fs.create(f, permission,
|
||||
overwrite, bufferSize, replication, blockSize, progress);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public FSDataOutputStream createNonRecursive(Path f, FsPermission permission,
|
||||
EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize,
|
||||
Progressable progress) throws IOException {
|
||||
|
||||
return fs.createNonRecursive(f, permission, flags, bufferSize, replication, blockSize,
|
||||
progress);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set replication for an existing file.
|
||||
|
|
|
@ -30,6 +30,7 @@ import java.io.FileDescriptor;
|
|||
import java.net.URI;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
|
@ -281,6 +282,18 @@ public class RawLocalFileSystem extends FileSystem {
|
|||
return new FSDataOutputStream(new BufferedOutputStream(
|
||||
new LocalFSFileOutputStream(f, false), bufferSize), statistics);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public FSDataOutputStream createNonRecursive(Path f, FsPermission permission,
|
||||
EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize,
|
||||
Progressable progress) throws IOException {
|
||||
if (exists(f) && !flags.contains(CreateFlag.OVERWRITE)) {
|
||||
throw new IOException("File already exists: "+f);
|
||||
}
|
||||
return new FSDataOutputStream(new BufferedOutputStream(
|
||||
new LocalFSFileOutputStream(f, false), bufferSize), statistics);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FSDataOutputStream create(Path f, FsPermission permission,
|
||||
|
|
|
@ -19,11 +19,14 @@ package org.apache.hadoop.fs.viewfs;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.classification.InterfaceStability;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.BlockLocation;
|
||||
import org.apache.hadoop.fs.ContentSummary;
|
||||
import org.apache.hadoop.fs.CreateFlag;
|
||||
import org.apache.hadoop.fs.FSDataInputStream;
|
||||
import org.apache.hadoop.fs.FSDataOutputStream;
|
||||
import org.apache.hadoop.fs.FileChecksum;
|
||||
|
@ -177,6 +180,16 @@ class ChRootedFileSystem extends FilterFileSystem {
|
|||
return super.create(fullPath(f), permission, overwrite, bufferSize,
|
||||
replication, blockSize, progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public FSDataOutputStream createNonRecursive(Path f, FsPermission permission,
|
||||
EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize,
|
||||
Progressable progress) throws IOException {
|
||||
|
||||
return super.createNonRecursive(fullPath(f), permission, flags, bufferSize, replication, blockSize,
|
||||
progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean delete(final Path f, final boolean recursive)
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.io.IOException;
|
|||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -35,6 +36,7 @@ import org.apache.hadoop.classification.InterfaceStability;
|
|||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.BlockLocation;
|
||||
import org.apache.hadoop.fs.ContentSummary;
|
||||
import org.apache.hadoop.fs.CreateFlag;
|
||||
import org.apache.hadoop.fs.FSDataInputStream;
|
||||
import org.apache.hadoop.fs.FSDataOutputStream;
|
||||
import org.apache.hadoop.fs.FileAlreadyExistsException;
|
||||
|
@ -281,6 +283,21 @@ public class ViewFileSystem extends FileSystem {
|
|||
return res.targetFileSystem.append(res.remainingPath, bufferSize, progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FSDataOutputStream createNonRecursive(Path f, FsPermission permission,
|
||||
EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize,
|
||||
Progressable progress) throws IOException {
|
||||
InodeTree.ResolveResult<FileSystem> res;
|
||||
try {
|
||||
res = fsState.resolve(getUriPath(f), false);
|
||||
} catch (FileNotFoundException e) {
|
||||
throw readOnlyMountTable("create", f);
|
||||
}
|
||||
assert(res.remainingPath != null);
|
||||
return res.targetFileSystem.createNonRecursive(res.remainingPath, permission,
|
||||
flags, bufferSize, replication, blockSize, progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FSDataOutputStream create(final Path f, final FsPermission permission,
|
||||
final boolean overwrite, final int bufferSize, final short replication,
|
||||
|
|
|
@ -662,4 +662,15 @@ public class ViewFileSystemBaseTest {
|
|||
public void testInternalSetOwner() throws IOException {
|
||||
fsView.setOwner(new Path("/internalDir"), "foo", "bar");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateNonRecursive() throws IOException {
|
||||
Path path = FileSystemTestHelper.getTestRootPath(fsView, "/user/foo");
|
||||
fsView.createNonRecursive(path, false, 1024, (short)1, 1024L, null);
|
||||
FileStatus status = fsView.getFileStatus(new Path("/user/foo"));
|
||||
Assert.assertTrue("Created file should be type file",
|
||||
fsView.isFile(new Path("/user/foo")));
|
||||
Assert.assertTrue("Target of created file should be type file",
|
||||
fsTarget.isFile(new Path(targetTestRoot,"user/foo")));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue