ZanderXu created HDFS-17481: ------------------------------- Summary: [FGL] ComputeFileSize in INodeFile should avoid BM lock Key: HDFS-17481 URL: https://issues.apache.org/jira/browse/HDFS-17481 Project: Hadoop HDFS Issue Type: Sub-task Reporter: ZanderXu Assignee: ZanderXu
GetFileInfo is a very common used operations. The result FileStatus contains the file size, which is computed by computeFileSize in InodeFile. Since it involves the states of block, it needs to hold the BM readLock. But holding the BM readLock will impact the performance, since getFileInfo is very common used RPC. As we all known, block size may be changed only by the following operations: # fsync # updatePipeline # commit block # commitBlockSynchronization # truncate # updates block in FSEditLogLoader # forceCompleteBlock in FSEditLogLoader All these above operations will be locked by the directory tree or global write lock, so computeFileSize can be handled without holding BM Lock. But the BR and IBM may change the block status from COMMIT to COMPLETE even through the block size is not changed. So computeFileSize cannot using isComplete to compute the size of last block. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org