You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "ZanderXu (Jira)" <ji...@apache.org> on 2024/12/25 09:42:00 UTC

[jira] [Resolved] (HDFS-17480) [FGL] Solutions for GetListing RPC

     [ https://issues.apache.org/jira/browse/HDFS-17480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

ZanderXu resolved HDFS-17480.
-----------------------------
    Resolution: Fixed

> [FGL] Solutions for GetListing RPC 
> -----------------------------------
>
>                 Key: HDFS-17480
>                 URL: https://issues.apache.org/jira/browse/HDFS-17480
>             Project: Hadoop HDFS
>          Issue Type: Task
>            Reporter: ZanderXu
>            Assignee: ZanderXu
>            Priority: Major
>
> GetListing is a very common used RPC by end-users. But we should consider how does GetListing support FGL.  
> For example, there is directory /a/b/c contains some children, such as d1, d2, d3, f1, f2, f3.
> Normally, we should hold the write lock iNode c for listing /a/b/c to make sure that there is no other threads are updating children of iNode c. But if the listing path is /, the entire directory tree will be locked, which will have a great impact.
>  
> There are two solutions to fix this problem:
> Solution 1:
>  * Hold the read lock of iNode c
>  * Loop through all children
>  ** Hold the read lock of each child and return it's file status
> The result may contains some stale file status, because the looped children may be updated by other thread before the result of getListing is returned to client.
>  
> Solution 2:
>  * Hold the write lock of parent and current Node when updating the current node
>  ** Holding the write lock of iNode c and d1 when updating d1
>  * Hold the read lock of iNode c
>  * Loop through all children
> This solution will increases the scope of lock, since the parent's write lock is usually not required.
>  
> I prefer the first solution, since namenode always returns results in batches. Changes may have occurred between batch and batch.
> By the way, GetContentSummary will use the solution one.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org