[
https://issues.apache.org/jira/browse/HDFS-17922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18082050#comment-18082050
]
ASF GitHub Bot commented on HDFS-17922:
---------------------------------------
hfutatzhanghb commented on PR #8500:
URL: https://github.com/apache/hadoop/pull/8500#issuecomment-4488179467
@KeeProMise Thanks a lot for involving me. Thanks @dParikesit report this
issue, make sense to me. But i suggest to update the unit test case to better
clarify the bug. When i drop `asyncComplete(null);`, the unit test you
submit can also pass.
> rename2 in the router asynchronous RPC is missing an async path
> ---------------------------------------------------------------
>
> Key: HDFS-17922
> URL: https://issues.apache.org/jira/browse/HDFS-17922
> Project: Hadoop HDFS
> Issue Type: Bug
> Reporter: Dimas Shidqi Parikesit
> Priority: Major
> Labels: pull-request-available
>
> In RouterAsyncClientProtocol:rename2, there is a path that returns
> synchronously if we have empty locations `if (locs.isEmpty)`.
> {code:java}
> @Override
> public void rename2(
> final String src, final String dst,
> final Options.Rename... options) throws IOException {
> ...
> if (locs.isEmpty()) {
> rbfRename.routerFedRename(src, dst, srcLocations, dstLocations);
> // Missing async handling
> return;
> }
> ...
> asyncApply((AsyncApplyFunction<Boolean, Boolean>) isMultiDestDirectory ->
> {
> if (isMultiDestDirectory) {
> ...
> rpcClient.invokeConcurrent(locs, method);
> } else {
> rpcClient.invokeSequential(locs, method, null, null);
> }
> });
> }{code}
>
> There are other paths that behave similarly, such as msync()
> {code:java}
> @Override
> public void msync() throws IOException {
> rpcServer.checkOperation(NameNode.OperationCategory.READ, true);
> ...
> if (namespacesEligibleForObserverReads.isEmpty()) {
> asyncCompleteWith(CompletableFuture.completedFuture(null));
> return;
> }
> rpcClient.invokeConcurrent(namespacesEligibleForObserverReads, method);
> } {code}
>
> We propose to add a patch to add `asyncComplete(null);` before the return.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]