You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by wh...@apache.org on 2015/04/29 03:06:10 UTC
hadoop git commit: HDFS-8273. FSNamesystem#Delete() should not call
logSync() when holding the lock. Contributed by Haohui Mai.
Repository: hadoop
Updated Branches:
refs/heads/branch-2 ea828578a -> 7bbe9495c
HDFS-8273. FSNamesystem#Delete() should not call logSync() when holding the lock. Contributed by Haohui Mai.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7bbe9495
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7bbe9495
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7bbe9495
Branch: refs/heads/branch-2
Commit: 7bbe9495c4744f08b22580fb92f82d479d379e21
Parents: ea82857
Author: Haohui Mai <wh...@apache.org>
Authored: Tue Apr 28 18:05:46 2015 -0700
Committer: Haohui Mai <wh...@apache.org>
Committed: Tue Apr 28 18:06:08 2015 -0700
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++
.../hdfs/server/namenode/FSDirDeleteOp.java | 1 -
.../hdfs/server/namenode/FSNamesystem.java | 22 ++++++++++++--------
3 files changed, 16 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7bbe9495/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 41a2bb6..003578b 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -303,6 +303,9 @@ Release 2.7.1 - UNRELEASED
HDFS-8070. Pre-HDFS-7915 DFSClient cannot use short circuit on
post-HDFS-7915 DataNode (cmccabe)
+ HDFS-8273. FSNamesystem#Delete() should not call logSync() when holding the
+ lock. (wheat9)
+
Release 2.7.0 - 2015-04-20
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7bbe9495/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirDeleteOp.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirDeleteOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirDeleteOp.java
index 02eb1de..2192c24 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirDeleteOp.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirDeleteOp.java
@@ -175,7 +175,6 @@ class FSDirDeleteOp {
incrDeletedFileCount(filesRemoved);
fsn.removeLeasesAndINodes(src, removedINodes, true);
- fsd.getEditLog().logSync();
if (NameNode.stateChangeLog.isDebugEnabled()) {
NameNode.stateChangeLog.debug("DIR* Namesystem.delete: "
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7bbe9495/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
index b2b68c6..d0d5f70 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
@@ -3686,6 +3686,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
} finally {
writeUnlock();
}
+ getEditLog().logSync();
if (toRemovedBlocks != null) {
removeBlocks(toRemovedBlocks); // Incremental deletion of blocks
}
@@ -4691,22 +4692,21 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
* blocks and unlink them from the namespace.
*/
private void clearCorruptLazyPersistFiles()
- throws SafeModeException, AccessControlException,
- UnresolvedLinkException, IOException {
+ throws IOException {
BlockStoragePolicy lpPolicy = blockManager.getStoragePolicy("LAZY_PERSIST");
- List<BlockCollection> filesToDelete = new ArrayList<BlockCollection>();
-
+ List<BlockCollection> filesToDelete = new ArrayList<>();
+ boolean changed = false;
writeLock();
-
try {
final Iterator<Block> it = blockManager.getCorruptReplicaBlockIterator();
while (it.hasNext()) {
Block b = it.next();
BlockInfoContiguous blockInfo = blockManager.getStoredBlock(b);
- if (blockInfo.getBlockCollection().getStoragePolicyID() == lpPolicy.getId()) {
+ if (blockInfo.getBlockCollection().getStoragePolicyID()
+ == lpPolicy.getId()) {
filesToDelete.add(blockInfo.getBlockCollection());
}
}
@@ -4714,9 +4714,10 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
for (BlockCollection bc : filesToDelete) {
LOG.warn("Removing lazyPersist file " + bc.getName() + " with no replicas.");
BlocksMapUpdateInfo toRemoveBlocks =
- FSDirDeleteOp.deleteInternal(
- FSNamesystem.this, bc.getName(),
- INodesInPath.fromINode((INodeFile) bc), false);
+ FSDirDeleteOp.deleteInternal(
+ FSNamesystem.this, bc.getName(),
+ INodesInPath.fromINode((INodeFile) bc), false);
+ changed |= toRemoveBlocks != null;
if (toRemoveBlocks != null) {
removeBlocks(toRemoveBlocks); // Incremental deletion of blocks
}
@@ -4724,6 +4725,9 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
} finally {
writeUnlock();
}
+ if (changed) {
+ getEditLog().logSync();
+ }
}
@Override