HDFS-8577. Avoid retrying to recover lease on a file which does not exist (Contributed by J.Andreina)

(cherry picked from commit 2eae130ab9)
This commit is contained in:
Vinayakumar B 2015-07-03 13:35:48 +05:30
parent f2c0539d38
commit b963ca84bc
3 changed files with 19 additions and 2 deletions

View File

@ -666,6 +666,9 @@ Release 2.8.0 - UNRELEASED
HDFS-8706. Fix typo in datanode startup options in HDFSCommands.html.
(Brahma Reddy Battula via Arpit Agarwal)
HDFS-8577. Avoid retrying to recover lease on a file which does not exist
(J.Andreina via vinayakumarb)
Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -19,6 +19,7 @@ package org.apache.hadoop.hdfs.tools;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
@ -254,6 +255,11 @@ public class DebugAdmin extends Configured implements Tool {
IOException ioe = null;
try {
recovered = dfs.recoverLease(new Path(pathStr));
} catch (FileNotFoundException e) {
System.err.println("recoverLease got exception: " + e.getMessage());
System.err.println("Giving up on recoverLease for " + pathStr +
" after 1 try");
return 1;
} catch (IOException e) {
ioe = e;
}
@ -262,8 +268,8 @@ public class DebugAdmin extends Configured implements Tool {
return 0;
}
if (ioe != null) {
System.err.println("recoverLease got exception: ");
ioe.printStackTrace();
System.err.println("recoverLease got exception: " +
ioe.getMessage());
} else {
System.err.println("recoverLease returned false.");
}

View File

@ -37,6 +37,7 @@ import java.io.PrintStream;
import static org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetTestUtil.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class TestDebugAdmin {
private MiniDFSCluster cluster;
@ -116,4 +117,11 @@ public class TestDebugAdmin {
"-block", blockFile.getAbsolutePath()})
);
}
@Test(timeout = 60000)
public void testRecoverLeaseforFileNotFound() throws Exception {
assertTrue(runCmd(new String[] {
"recoverLease", "-path", "/foo", "-retries", "2" }).contains(
"Giving up on recoverLease for /foo after 1 try"));
}
}