svn merge -c 1487647 from trunk for HDFS-4846. Clean up snapshot CLI commands output stacktrace for invalid arguments.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1488093 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Tsz-wo Sze 2013-05-31 05:07:52 +00:00
parent ab2588a78b
commit 387b7af02f
7 changed files with 35 additions and 26 deletions

View File

@ -771,6 +771,9 @@ Release 2.0.5-beta - UNRELEASED
HDFS-4842. Identify the correct prior snapshot when deleting a
snapshot under a renamed subtree. (jing9)
HDFS-4846. Clean up snapshot CLI commands output stacktrace for invalid
arguments. (Jing Zhao via brandonli)
Release 2.0.4-alpha - 2013-04-25
INCOMPATIBLE CHANGES

View File

@ -2152,11 +2152,7 @@ public class DFSClient implements java.io.Closeable {
*/
public void allowSnapshot(String snapshotRoot) throws IOException {
checkOpen();
try {
namenode.allowSnapshot(snapshotRoot);
} catch(RemoteException re) {
throw re.unwrapRemoteException();
}
}
/**
@ -2166,11 +2162,7 @@ public class DFSClient implements java.io.Closeable {
*/
public void disallowSnapshot(String snapshotRoot) throws IOException {
checkOpen();
try {
namenode.disallowSnapshot(snapshotRoot);
} catch(RemoteException re) {
throw re.unwrapRemoteException();
}
}
/**

View File

@ -1433,7 +1433,7 @@ public class FSDirectory implements Closeable {
INodeDirectorySnapshottable ssTargetDir =
(INodeDirectorySnapshottable) targetDir;
if (ssTargetDir.getNumSnapshots() > 0) {
throw new IOException("The direcotry " + ssTargetDir.getFullPathName()
throw new IOException("The directory " + ssTargetDir.getFullPathName()
+ " cannot be deleted since " + ssTargetDir.getFullPathName()
+ " is snapshottable and already has snapshots");
} else {

View File

@ -51,8 +51,13 @@ public class LsSnapshottableDir {
}
DistributedFileSystem dfs = (DistributedFileSystem) fs;
try {
SnapshottableDirectoryStatus[] stats = dfs.getSnapshottableDirListing();
SnapshottableDirectoryStatus.print(stats, System.out);
} catch (IOException e) {
String[] content = e.getLocalizedMessage().split("\n");
System.err.println("lsSnapshottableDir: " + content[0]);
}
}
}

View File

@ -82,9 +82,14 @@ public class SnapshotDiff {
Path snapshotRoot = new Path(argv[0]);
String fromSnapshot = getSnapshotName(argv[1]);
String toSnapshot = getSnapshotName(argv[2]);
try {
SnapshotDiffReport diffReport = dfs.getSnapshotDiffReport(snapshotRoot,
fromSnapshot, toSnapshot);
System.out.println(diffReport.toString());
} catch (IOException e) {
String[] content = e.getLocalizedMessage().split("\n");
System.err.println("snapshotDiff: " + content[0]);
}
}
}

View File

@ -135,7 +135,7 @@ public class TestNestedSnapshots {
try {
hdfs.disallowSnapshot(rootPath);
fail("Expect snapshot exception when disallowing snapshot on root again");
} catch (SnapshotException e) {
} catch (RemoteException e) {
GenericTestUtils.assertExceptionContains(
"Root is not a snapshottable directory", e);
}
@ -149,14 +149,16 @@ public class TestNestedSnapshots {
try {
hdfs.allowSnapshot(rootPath);
Assert.fail();
} catch(SnapshotException se) {
assertNestedSnapshotException(se, "subdirectory");
} catch(RemoteException se) {
assertNestedSnapshotException(
(SnapshotException) se.unwrapRemoteException(), "subdirectory");
}
try {
hdfs.allowSnapshot(foo);
Assert.fail();
} catch(SnapshotException se) {
assertNestedSnapshotException(se, "subdirectory");
} catch(RemoteException se) {
assertNestedSnapshotException(
(SnapshotException) se.unwrapRemoteException(), "subdirectory");
}
final Path sub1Bar = new Path(bar, "sub1");
@ -165,14 +167,16 @@ public class TestNestedSnapshots {
try {
hdfs.allowSnapshot(sub1Bar);
Assert.fail();
} catch(SnapshotException se) {
assertNestedSnapshotException(se, "ancestor");
} catch(RemoteException se) {
assertNestedSnapshotException(
(SnapshotException) se.unwrapRemoteException(), "ancestor");
}
try {
hdfs.allowSnapshot(sub2Bar);
Assert.fail();
} catch(SnapshotException se) {
assertNestedSnapshotException(se, "ancestor");
} catch(RemoteException se) {
assertNestedSnapshotException(
(SnapshotException) se.unwrapRemoteException(), "ancestor");
}
}

View File

@ -112,7 +112,7 @@ public class TestSnapshotDeletion {
// Deleting a snapshottable dir with snapshots should fail
exception.expect(RemoteException.class);
String error = "The direcotry " + sub.toString()
String error = "The directory " + sub.toString()
+ " cannot be deleted since " + sub.toString()
+ " is snapshottable and already has snapshots";
exception.expectMessage(error);