You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Ruyue Ma (JIRA)" <ji...@apache.org> on 2008/12/04 07:42:44 UTC
[jira] Commented: (HADOOP-4771) FSImage saveFSImage() will have
problem.
[ https://issues.apache.org/jira/browse/HADOOP-4771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12653204#action_12653204 ]
Ruyue Ma commented on HADOOP-4771:
----------------------------------
The modification is simple.
In FSDirectory, the original code is
public FSDirectory(FSImage fsImage, FSNamesystem ns, Configuration conf) throws IOException {
rootDir = new INodeDirectoryWithQuota(INodeDirectory.ROOT_NAME,
ns.createFsOwnerPermissions(new FsPermission((short)0755)), ns.getDefaultReplication(),
Integer.MAX_VALUE, -1);
this.fsImage = fsImage;
namesystem = ns;
initialize(conf);
}
the modified version is:
public FSDirectory(FSImage fsImage, FSNamesystem ns, Configuration conf) throws IOException {
rootDir = new INodeDirectoryWithQuota(INodeDirectory.ROOT_NAME,
ns.createFsOwnerPermissions(new FsPermission((short)0755)), ns.getDefaultReplication(),
Integer.MAX_VALUE, -1);
this.fsImage = fsImage;
namesystem = ns;
initialize(conf);
updateCountForINodeWithQuota();
}
> FSImage saveFSImage() will have problem.
> ----------------------------------------
>
> Key: HADOOP-4771
> URL: https://issues.apache.org/jira/browse/HADOOP-4771
> Project: Hadoop Core
> Issue Type: Bug
> Components: dfs
> Affects Versions: 0.19.0, 0.19.1, 0.20.0
> Reporter: Ruyue Ma
> Fix For: 0.19.1, 0.20.0
>
>
> Now the directory doesn't have replication factor. so in FSImage.saveFsImage().
> When you format the namenode , hadoop will call FSImage.saveFsImage(). saveFsImage includes the following code:
> out.writeLong(fsDir.rootDir.numItemsInTree());
> When format, the fsDir.rootDir.numItemsInTree() should be 1 (it include the rootdir). But now fsDir.rootDir.numItemsInTree() is 0.
> The reason why the bug is not simply discovered or triggered is the code in FSImage.saveFsImage().->saveINode2Image().
> } else { // write directory inode
> out.writeShort(0); // replication
> Because the directory doesn't have replication factor, so here is 0. This will cause loadFilesUnderConstruction() will load any files when hadoop fisrt starts up after format.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.