From fe4ad4a39c6fb2208b26d0acac4d5a63554ee466 Mon Sep 17 00:00:00 2001 From: Akira Ajisaka Date: Thu, 2 Jun 2016 18:52:47 +0900 Subject: [PATCH] HDFS-9476. TestDFSUpgradeFromImage#testUpgradeFromRel1BBWImage occasionally fail. Contributed by Masatake Iwasaki. (cherry picked from commit 69555fca066815053dd9168ebe15868a5c02cdcd) (cherry picked from commit 3dd557e4b6b852ee99f6acc29cca1088dc3a39ff) --- .../hadoop/hdfs/TestDFSUpgradeFromImage.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java index cb139747607..c7d25c0d5a6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java @@ -173,7 +173,7 @@ private void verifyChecksum(String path, long checksum) throws IOException { private static FSInputStream dfsOpenFileWithRetries(DistributedFileSystem dfs, String pathName) throws IOException { IOException exc = null; - for (int tries = 0; tries < 10; tries++) { + for (int tries = 0; tries < 30; tries++) { try { return dfs.dfs.open(pathName); } catch (IOException e) { @@ -184,6 +184,7 @@ private static FSInputStream dfsOpenFileWithRetries(DistributedFileSystem dfs, throw exc; } try { + LOG.info("Open failed. " + tries + " times. Retrying."); Thread.sleep(1000); } catch (InterruptedException ignored) {} } @@ -570,8 +571,17 @@ static void recoverAllLeases(DFSClient dfs, String pathStr = path.toString(); HdfsFileStatus status = dfs.getFileInfo(pathStr); if (!status.isDir()) { - dfs.recoverLease(pathStr); - return; + for (int retries = 10; retries > 0; retries--) { + if (dfs.recoverLease(pathStr)) { + return; + } else { + try { + Thread.sleep(1000); + } catch (InterruptedException ignored) { + } + } + } + throw new IOException("Failed to recover lease of " + path); } byte prev[] = HdfsFileStatus.EMPTY_NAME; DirectoryListing dirList;