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

ASF GitHub Bot commented on HDFS-16764:
---------------------------------------

ZanderXu commented on PR #4872:
URL: https://github.com/apache/hadoop/pull/4872#issuecomment-1272433724

   > Hi @ZanderXu,
   > 
   > I am not clear what exactly you are trying to achieve here. Are you trying 
to enable observerNodes to handle addBlock RPC from clients? I believe addBlock 
is an update operation to FSNamespace and only the activeNN should handle 
modification to FSNamespace.
   
   @xinglin Thanks for your review. Maybe you missed somethings.  `addBlock` is 
an update operation. We expected that only activeNN can handle it, but in the 
current logic, ObserverNN or StandbyNN can handle it and may return one 
FileNotFoundException to Client.  Client will not failover this operation to 
ActiveNN with a FileNotFoundException response.
   
   ObserverNN or StandbyNN should throw one StandbyException or 
RetryOnActiveException to Client when handling update operations and let Client 
to failover this operation to Active.
   
   




> ObserverNamenode handles addBlock rpc and throws a FileNotFoundException 
> -------------------------------------------------------------------------
>
>                 Key: HDFS-16764
>                 URL: https://issues.apache.org/jira/browse/HDFS-16764
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: ZanderXu
>            Assignee: ZanderXu
>            Priority: Critical
>              Labels: pull-request-available
>
> ObserverNameNode currently can handle the addBlockLocation RPC, but it may 
> throw a FileNotFoundException when it contains stale txid.
>  * AddBlock is not a coordinated method, so Observer will not check the 
> statId.
>  * AddBlock does the validation with checkOperation(OperationCategory.READ)
> So the observer can handle the addBlock rpc. If this observer cannot replay 
> the edit of create file, it will throw a FileNotFoundException during doing 
> validation.
> The related code as follows:
> {code:java}
> checkOperation(OperationCategory.READ);
> final FSPermissionChecker pc = getPermissionChecker();
> FSPermissionChecker.setOperationType(operationName);
> readLock();
> try {
>   checkOperation(OperationCategory.READ);
>   r = FSDirWriteFileOp.validateAddBlock(this, pc, src, fileId, clientName,
>                                         previous, onRetryBlock);
> } finally {
>   readUnlock(operationName);
> } {code}



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

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

Reply via email to