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

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

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

   @xkrogen Sir, thanks for your explanation.
   
   Yeah, ObserverNN also knows the states of DataNodes as well. But the 
`scheduledSize` is not shared, and almost all datanode chosen are handled by 
Active, so Active has a complete judgment basis, so it's better been handled by 
Active.
   
   Of  course, it would be better if some logic of datanode chosen can be moved 
to Standby or Observer, but do we want to do this change directly in this PR? 
Or open a new PR to discuss it?




> 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