[
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]