hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ruyue Ma (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-4771) FSImage saveFSImage() will have problem.
Date Thu, 04 Dec 2008 06:42:44 GMT

    [ 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.


Mime
View raw message