HDFS-8480. Fix performance and timeout issues in HDFS-7929 by using hard-links to preserve old edit logs, instead of copying them. (Zhe Zhang via Colin P. McCabe)
(cherry picked from commit 7b424f938c3c306795d574792b086d84e4f06425) (cherry picked from commit cbd11681ce8a51d187d91748b67a708681e599de) Conflicts: hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgrade.java Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e1b4e69b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e1b4e69b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e1b4e69b Branch: refs/heads/sjlee/hdfs-merge Commit: e1b4e69bf23022af3125e1c6dc4ac05c89e1418f Parents: db40aec Author: Colin Patrick Mccabe <cmcc...@cloudera.com> Authored: Mon Jun 22 14:37:10 2015 -0700 Committer: Sangjin Lee <sj...@apache.org> Committed: Thu Aug 13 23:59:46 2015 -0700 ---------------------------------------------------------------------- .../hdfs/server/namenode/NNUpgradeUtil.java | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e1b4e69b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNUpgradeUtil.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNUpgradeUtil.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNUpgradeUtil.java index c01b11d..a4d9580 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNUpgradeUtil.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNUpgradeUtil.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hdfs.server.namenode; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; +import java.nio.file.Files; import java.util.List; import org.apache.commons.logging.Log; @@ -130,23 +131,8 @@ public abstract class NNUpgradeUtil { for (String s : fileNameList) { File prevFile = new File(tmpDir, s); - Preconditions.checkState(prevFile.canRead(), - "Edits log file " + s + " is not readable."); File newFile = new File(curDir, prevFile.getName()); - Preconditions.checkState(newFile.createNewFile(), - "Cannot create new edits log file in " + curDir); - EditLogFileInputStream in = new EditLogFileInputStream(prevFile); - EditLogFileOutputStream out = - new EditLogFileOutputStream(conf, newFile, 512*1024); - FSEditLogOp logOp = in.nextValidOp(); - while (logOp != null) { - out.write(logOp); - logOp = in.nextOp(); - } - out.setReadyToFlush(); - out.flushAndSync(true); - out.close(); - in.close(); + Files.createLink(newFile.toPath(), prevFile.toPath()); } }