private void processINodesUC ( DataInputStream in , ImageVisitor v , boolean skipBlocks ) throws IOException { int numINUC = in . readInt ( ) ; v . visitEnclosingElement ( ImageElement . INODES_UNDER_CONSTRUCTION , ImageElement . NUM_INODES_UNDER_CONSTRUCTION , numINUC ) ; for ( int i = 0 ; i < numINUC ; i ++ ) { checkInterruption ( ) ; v . visitEnclosingElement ( ImageElement . INODE_UNDER_CONSTRUCTION ) ; byte [ ] name = FSImageSerialization . readBytes ( in ) ; String n = new String ( name , "UTF8" ) ; v . visit ( ImageElement . INODE_PATH , n ) ; if ( LayoutVersion . supports ( Feature . ADD_INODE_ID , imageVersion ) ) { v . visit ( ImageElement . INODE_ID , in . readLong ( ) ) ; } v . visit ( ImageElement . REPLICATION , in . readShort ( ) ) ; v . visit ( ImageElement . MODIFICATION_TIME , formatDate ( in . readLong ( ) ) ) ; v . visit ( ImageElement . PREFERRED_BLOCK_SIZE , in . readLong ( ) ) ; int numBlocks = in . readInt ( ) ; processBlocks ( in , v , numBlocks , skipBlocks ) ; processPermission ( in , v ) ; v . visit ( ImageElement . CLIENT_NAME , FSImageSerialization . readString ( in ) ) ; v . visit ( ImageElement . CLIENT_MACHINE , FSImageSerialization . readString ( in ) ) ; // Skip over the datanode descriptors, which are still stored in the // file but are not used by the datanode or loaded into memory int numLocs = in . readInt ( ) ; for ( int j = 0 ; j < numLocs ; j ++ ) { in . readShort ( ) ; in . readLong ( ) ; in . readLong ( ) ; in . readLong ( ) ; in . readInt ( ) ; FSImageSerialization . readString ( in ) ; FSImageSerialization . readString ( in ) ; WritableUtils . readEnum ( in , AdminStates . class ) ; } v . leaveEnclosingElement ( ) ; // INodeUnderConstruction } v . leaveEnclosingElement ( ) ; // INodesUnderConstruction }
Process the INodes under construction section of the fsimage .