[
https://issues.apache.org/jira/browse/HDFS-16764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629609#comment-17629609
]
ASF GitHub Bot commented on HDFS-16764:
---------------------------------------
ZanderXu commented on code in PR #4872:
URL: https://github.com/apache/hadoop/pull/4872#discussion_r1015053518
##########
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.
> 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]