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
|
HADOOP-9152. HDFS can report negative DFS Used on clusters with very small
|
||||||
amounts of data. (Brock Noland via atm)
|
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
|
Release 2.0.2-alpha - 2012-09-07
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -166,6 +166,18 @@ public class FilterFileSystem extends FileSystem {
|
||||||
return fs.create(f, permission,
|
return fs.create(f, permission,
|
||||||
overwrite, bufferSize, replication, blockSize, progress);
|
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.
|
* Set replication for an existing file.
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.io.FileDescriptor;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
import org.apache.hadoop.classification.InterfaceAudience;
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
|
@ -281,6 +282,18 @@ public class RawLocalFileSystem extends FileSystem {
|
||||||
return new FSDataOutputStream(new BufferedOutputStream(
|
return new FSDataOutputStream(new BufferedOutputStream(
|
||||||
new LocalFSFileOutputStream(f, false), bufferSize), statistics);
|
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
|
@Override
|
||||||
public FSDataOutputStream create(Path f, FsPermission permission,
|
public FSDataOutputStream create(Path f, FsPermission permission,
|
||||||
|
|
|
@ -19,11 +19,14 @@ package org.apache.hadoop.fs.viewfs;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
|
||||||
import org.apache.hadoop.classification.InterfaceAudience;
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
import org.apache.hadoop.classification.InterfaceStability;
|
import org.apache.hadoop.classification.InterfaceStability;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.BlockLocation;
|
import org.apache.hadoop.fs.BlockLocation;
|
||||||
import org.apache.hadoop.fs.ContentSummary;
|
import org.apache.hadoop.fs.ContentSummary;
|
||||||
|
import org.apache.hadoop.fs.CreateFlag;
|
||||||
import org.apache.hadoop.fs.FSDataInputStream;
|
import org.apache.hadoop.fs.FSDataInputStream;
|
||||||
import org.apache.hadoop.fs.FSDataOutputStream;
|
import org.apache.hadoop.fs.FSDataOutputStream;
|
||||||
import org.apache.hadoop.fs.FileChecksum;
|
import org.apache.hadoop.fs.FileChecksum;
|
||||||
|
@ -177,6 +180,16 @@ class ChRootedFileSystem extends FilterFileSystem {
|
||||||
return super.create(fullPath(f), permission, overwrite, bufferSize,
|
return super.create(fullPath(f), permission, overwrite, bufferSize,
|
||||||
replication, blockSize, progress);
|
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
|
@Override
|
||||||
public boolean delete(final Path f, final boolean recursive)
|
public boolean delete(final Path f, final boolean recursive)
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -35,6 +36,7 @@ import org.apache.hadoop.classification.InterfaceStability;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.BlockLocation;
|
import org.apache.hadoop.fs.BlockLocation;
|
||||||
import org.apache.hadoop.fs.ContentSummary;
|
import org.apache.hadoop.fs.ContentSummary;
|
||||||
|
import org.apache.hadoop.fs.CreateFlag;
|
||||||
import org.apache.hadoop.fs.FSDataInputStream;
|
import org.apache.hadoop.fs.FSDataInputStream;
|
||||||
import org.apache.hadoop.fs.FSDataOutputStream;
|
import org.apache.hadoop.fs.FSDataOutputStream;
|
||||||
import org.apache.hadoop.fs.FileAlreadyExistsException;
|
import org.apache.hadoop.fs.FileAlreadyExistsException;
|
||||||
|
@ -281,6 +283,21 @@ public class ViewFileSystem extends FileSystem {
|
||||||
return res.targetFileSystem.append(res.remainingPath, bufferSize, progress);
|
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
|
@Override
|
||||||
public FSDataOutputStream create(final Path f, final FsPermission permission,
|
public FSDataOutputStream create(final Path f, final FsPermission permission,
|
||||||
final boolean overwrite, final int bufferSize, final short replication,
|
final boolean overwrite, final int bufferSize, final short replication,
|
||||||
|
|
|
@ -662,4 +662,15 @@ public class ViewFileSystemBaseTest {
|
||||||
public void testInternalSetOwner() throws IOException {
|
public void testInternalSetOwner() throws IOException {
|
||||||
fsView.setOwner(new Path("/internalDir"), "foo", "bar");
|
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