HADOOP-12119. hadoop fs -expunge does not work for federated namespace (Contributed by J.Andreina)

(cherry picked from commit c815344e2e)
This commit is contained in:
Vinayakumar B 2015-06-29 15:58:54 +05:30
parent beab746177
commit e4adb191aa
3 changed files with 29 additions and 5 deletions

View File

@ -395,6 +395,9 @@ Release 2.8.0 - UNRELEASED
HADOOP-8151. Error handling in snappy decompressor throws invalid HADOOP-8151. Error handling in snappy decompressor throws invalid
exceptions. (Matt Foley via harsh) exceptions. (Matt Foley via harsh)
HADOOP-12119. hadoop fs -expunge does not work for federated namespace
(J.Andreina via vinayakumarb)
Release 2.7.2 - UNRELEASED Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -25,6 +25,7 @@ import java.util.List;
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.fs.FileSystem;
import org.apache.hadoop.fs.PathIOException; import org.apache.hadoop.fs.PathIOException;
import org.apache.hadoop.fs.PathIsDirectoryException; import org.apache.hadoop.fs.PathIsDirectoryException;
import org.apache.hadoop.fs.PathIsNotDirectoryException; import org.apache.hadoop.fs.PathIsNotDirectoryException;
@ -195,9 +196,19 @@ class Delete {
@Override @Override
protected void processArguments(LinkedList<PathData> args) protected void processArguments(LinkedList<PathData> args)
throws IOException { throws IOException {
Trash trash = new Trash(getConf()); FileSystem[] childFileSystems =
trash.expunge(); FileSystem.get(getConf()).getChildFileSystems();
trash.checkpoint(); if (null != childFileSystems) {
for (FileSystem fs : childFileSystems) {
Trash trash = new Trash(fs, getConf());
trash.expunge();
trash.checkpoint();
}
} else {
Trash trash = new Trash(getConf());
trash.expunge();
trash.checkpoint();
}
} }
} }
} }

View File

@ -594,8 +594,18 @@ public class TestTrash extends TestCase {
TestLFS() { TestLFS() {
this(new Path(TEST_DIR, "user/test")); this(new Path(TEST_DIR, "user/test"));
} }
TestLFS(Path home) { TestLFS(final Path home) {
super(); super(new RawLocalFileSystem() {
@Override
protected Path getInitialWorkingDirectory() {
return makeQualified(home);
}
@Override
public Path getHomeDirectory() {
return makeQualified(home);
}
});
this.home = home; this.home = home;
} }
@Override @Override