[
https://issues.apache.org/jira/browse/HDFS-16764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629626#comment-17629626
]
ASF GitHub Bot commented on HDFS-16764:
---------------------------------------
tomscut commented on code in PR #4872:
URL: https://github.com/apache/hadoop/pull/4872#discussion_r1015088585
##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java:
##########
@@ -2285,6 +2285,7 @@ public BatchedEntries<ZoneReencryptionStatus>
listReencryptionStatus(
public void setErasureCodingPolicy(String src, String ecPolicyName)
throws IOException {
checkNNStartup();
+ namesystem.checkOperation(OperationCategory.WRITE);
Review Comment:
> @tomscut Sir, thanks for you review.
>
> `checkOperation` here is used to judge the HA status at the first time. If
the HA status does not meet the requirement, an exception can be returned as
soon as possible.
>
> You can see this usage in many methods.
I see. But it seems unrelated to `addBlock`? Maybe we should open a new jira
to add this check to all missing methods?
> 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]