HDFS-4707. Add snapshot methods to FilterFileSystem and fix findbugs warnings.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-2802@1469119 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2186912ff9
commit
0ad27ad3e3
|
@ -462,4 +462,22 @@ public class FilterFileSystem extends FileSystem {
|
||||||
public FileSystem[] getChildFileSystems() {
|
public FileSystem[] getChildFileSystems() {
|
||||||
return new FileSystem[]{fs};
|
return new FileSystem[]{fs};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override // FileSystem
|
||||||
|
public Path createSnapshot(Path path, String snapshotName)
|
||||||
|
throws IOException {
|
||||||
|
return fs.createSnapshot(path, snapshotName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override // FileSystem
|
||||||
|
public void renameSnapshot(Path path, String snapshotOldName,
|
||||||
|
String snapshotNewName) throws IOException {
|
||||||
|
fs.renameSnapshot(path, snapshotOldName, snapshotNewName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override // FileSystem
|
||||||
|
public void deleteSnapshot(Path path, String snapshotName)
|
||||||
|
throws IOException {
|
||||||
|
fs.deleteSnapshot(path, snapshotName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,6 +218,8 @@ public class TestFilterFileSystem {
|
||||||
continue;
|
continue;
|
||||||
if (Modifier.isPrivate(m.getModifiers()))
|
if (Modifier.isPrivate(m.getModifiers()))
|
||||||
continue;
|
continue;
|
||||||
|
if (Modifier.isFinal(m.getModifiers()))
|
||||||
|
continue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DontCheck.class.getMethod(m.getName(), m.getParameterTypes());
|
DontCheck.class.getMethod(m.getName(), m.getParameterTypes());
|
||||||
|
|
|
@ -250,3 +250,6 @@ Branch-2802 Snapshot (Unreleased)
|
||||||
|
|
||||||
HDFS-4550. Refactor INodeDirectory.INodesInPath to a standalone class.
|
HDFS-4550. Refactor INodeDirectory.INodesInPath to a standalone class.
|
||||||
(szetszwo)
|
(szetszwo)
|
||||||
|
|
||||||
|
HDFS-4707. Add snapshot methods to FilterFileSystem and fix findbugs warnings.
|
||||||
|
(szetszwo)
|
||||||
|
|
|
@ -35,6 +35,7 @@ import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.hadoop.classification.InterfaceAudience;
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
|
@ -1001,14 +1002,13 @@ public class FSImageFormat {
|
||||||
currentDirName.position(prefixLen);
|
currentDirName.position(prefixLen);
|
||||||
}
|
}
|
||||||
if (snapshotDirMap != null) {
|
if (snapshotDirMap != null) {
|
||||||
for (Snapshot ss : snapshotDirMap.keySet()) {
|
for (Entry<Snapshot, List<INodeDirectory>> e : snapshotDirMap.entrySet()) {
|
||||||
List<INodeDirectory> snapshotSubDirs = snapshotDirMap.get(ss);
|
for (INodeDirectory subDir : e.getValue()) {
|
||||||
for (INodeDirectory subDir : snapshotSubDirs) {
|
|
||||||
// make sure we only save the subtree under a reference node once
|
// make sure we only save the subtree under a reference node once
|
||||||
boolean toSave = subDir.getParentReference() != null ?
|
boolean toSave = subDir.getParentReference() != null ?
|
||||||
referenceMap.toProcessSubtree(subDir.getId()) : true;
|
referenceMap.toProcessSubtree(subDir.getId()) : true;
|
||||||
currentDirName.put(PATH_SEPARATOR).put(subDir.getLocalNameBytes());
|
currentDirName.put(PATH_SEPARATOR).put(subDir.getLocalNameBytes());
|
||||||
saveImage(currentDirName, subDir, out, ss, toSave);
|
saveImage(currentDirName, subDir, out, e.getKey(), toSave);
|
||||||
currentDirName.position(prefixLen);
|
currentDirName.position(prefixLen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,7 +192,7 @@ public class FSImageSerialization {
|
||||||
SnapshotFSImageFormat.saveFileDiffList(file, out);
|
SnapshotFSImageFormat.saveFileDiffList(file, out);
|
||||||
|
|
||||||
if (writeUnderConstruction) {
|
if (writeUnderConstruction) {
|
||||||
if (file.isUnderConstruction()) {
|
if (file instanceof INodeFileUnderConstruction) {
|
||||||
out.writeBoolean(true);
|
out.writeBoolean(true);
|
||||||
final INodeFileUnderConstruction uc = (INodeFileUnderConstruction)file;
|
final INodeFileUnderConstruction uc = (INodeFileUnderConstruction)file;
|
||||||
writeString(uc.getClientName(), out);
|
writeString(uc.getClientName(), out);
|
||||||
|
|
|
@ -113,7 +113,7 @@ public class Snapshot implements Comparable<byte[]> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The root directory of the snapshot. */
|
/** The root directory of the snapshot. */
|
||||||
public class Root extends INodeDirectory {
|
static public class Root extends INodeDirectory {
|
||||||
Root(INodeDirectory other) {
|
Root(INodeDirectory other) {
|
||||||
super(other, false);
|
super(other, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -238,7 +238,7 @@ public class SnapshotFSImageFormat {
|
||||||
public static void loadDirectoryDiffList(INodeDirectory dir,
|
public static void loadDirectoryDiffList(INodeDirectory dir,
|
||||||
DataInput in, FSImageFormat.Loader loader) throws IOException {
|
DataInput in, FSImageFormat.Loader loader) throws IOException {
|
||||||
final int size = in.readInt();
|
final int size = in.readInt();
|
||||||
if (size != -1) {
|
if (dir instanceof INodeDirectoryWithSnapshot) {
|
||||||
INodeDirectoryWithSnapshot withSnapshot = (INodeDirectoryWithSnapshot)dir;
|
INodeDirectoryWithSnapshot withSnapshot = (INodeDirectoryWithSnapshot)dir;
|
||||||
DirectoryDiffList diffs = withSnapshot.getDiffs();
|
DirectoryDiffList diffs = withSnapshot.getDiffs();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
|
|
Loading…
Reference in New Issue