[ 
https://issues.apache.org/jira/browse/HDFS-13880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16609387#comment-16609387
 ] 

Erik Krogen commented on HDFS-13880:
------------------------------------

[~vagarychen] - 
{quote}
The original thought was that, getContentSummary already yields locks so could 
already be returning results based on outdated info. Making it coordinated 
seems to have little gain.
{quote}
Yielding the locks results in a different type of inconsistency than lacking 
the use of the {{isCoordinated}} flag. Consider the following scenario:
* My home directory {{/user/xkrogen}} has a quota of 100GB and is currently 
empty.
* I move some 100GB file, {{/tmp/largeFile.avro}}, into my home directory.
* I check my quota via {{getContentSummary}, it says I have 100GB remaining 
quota (because it is not coordinated and reads stale data)
* I try to move another file into my home directory and it fails because I've 
exceeded quota
* I check my quota again via {{getContentSummary}} and it still says I have 
100GB remaining

While the lock yield means you could have misleading results for _concurrent_ 
modifications, the lack of {{isCoordinated}} means you can miss results for 
actions that occurred strictly before the content summary, losing RYOW 
semantics. I think this is much more confusing for a user.

Also, just for the sake of uniformity, it seems odd to leave as uncoordinated 
this one operation which does actually read from the global state - other 
uncoordinated ops deal with node-local state.

> Add mechanism to allow certain RPC calls to bypass sync
> -------------------------------------------------------
>
>                 Key: HDFS-13880
>                 URL: https://issues.apache.org/jira/browse/HDFS-13880
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: namenode
>            Reporter: Chen Liang
>            Assignee: Chen Liang
>            Priority: Major
>         Attachments: HDFS-13880-HDFS-12943.001.patch, 
> HDFS-13880-HDFS-12943.002.patch, HDFS-13880-HDFS-12943.003.patch, 
> HDFS-13880-HDFS-12943.004.patch
>
>
> Currently, every single call to NameNode will be synced, in the sense that 
> NameNode will not process it until state id catches up. But in certain cases, 
> we would like to bypass this check and allow the call to return immediately, 
> even when the server id is not up to date. One case could be the to-be-added 
> new API in HDFS-13749 that request for current state id. Others may include 
> calls that do not promise real time responses such as {{getContentSummary}}. 
> This Jira is to add the mechanism to allow certain calls to bypass sync.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to