HDFS-4846. Clean up snapshot CLI commands output stacktrace for invalid arguments. Contributed by Jing Zhao

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1487647 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brandon Li 2013-05-29 21:25:01 +00:00
parent 973017cab7
commit 719034c12c
7 changed files with 35 additions and 26 deletions

View File

@ -607,6 +607,9 @@ Trunk (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.5-beta - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -2125,11 +2125,7 @@ public SnapshottableDirectoryStatus[] getSnapshottableDirListing()
*/
public void allowSnapshot(String snapshotRoot) throws IOException {
checkOpen();
try {
namenode.allowSnapshot(snapshotRoot);
} catch(RemoteException re) {
throw re.unwrapRemoteException();
}
}
/**
@ -2139,11 +2135,7 @@ public void allowSnapshot(String snapshotRoot) throws IOException {
*/
public void disallowSnapshot(String snapshotRoot) throws IOException {
checkOpen();
try {
namenode.disallowSnapshot(snapshotRoot);
} catch(RemoteException re) {
throw re.unwrapRemoteException();
}
}
/**

View File

@ -1433,7 +1433,7 @@ private static void checkSnapshot(INode target,
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 static void main(String[] argv) throws IOException {
}
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 static void main(String[] argv) throws IOException {
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 void testNestedSnapshots() throws Exception {
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 void testNestedSnapshots() throws Exception {
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 void testNestedSnapshots() throws Exception {
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 void testDeleteDirectoryWithSnapshot() throws Exception {
// 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);