调用点
- DataNode.getReplicaVisibleLength(ExtendedBlock) (org.apache.hadoop.hdfs.server.datanode) // ClientDataNodeProtocol
- BlockChecksumComputer in BlockChecksumHelper.BlockChecksumComputer(DataNode, ExtendedBlock, BlockChecksumOptions) (org.apache.hadoop.hdfs.server.datanode)
- DataNode.transferReplicaForPipelineRecovery(ExtendedBlock, DatanodeInfo[], StorageType[], String[], String) (org.apache.hadoop.hdfs.server.datanode)
下图是第一个分支的完整调用链。

可以看到,在openInfo方法里,调用了getLastBlockLength用来获取最后一个block的长度,那获取最后一个block的长度理所当然会调用getReplicaVisibleLength方法去获取副本的可见长度了。
我们关注一下openInfo的具体实现:
/**
* Grab the open-file info from namenode
* @param refreshLocatedBlocks whether to re-fetch locatedblocks
*/



















![推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计](https://img-blog.csdnimg.cn/b935ff75e3e84d7f88de39613bb02bad.png)