[ https://issues.apache.org/jira/browse/HDFS-17596?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17888978#comment-17888978 ]
ASF GitHub Bot commented on HDFS-17596: --------------------------------------- KeeProMise commented on code in PR #6988: URL: https://github.com/apache/hadoop/pull/6988#discussion_r1798220883 ########## hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcServer.java: ########## @@ -791,6 +801,37 @@ <T> T invokeAtAvailableNs(RemoteMethod method, Class<T> clazz) return invokeOnNs(method, clazz, io, nss); } + <T> T invokeAtAvailableNsAsync(RemoteMethod method, Class<T> clazz) + throws IOException { + String nsId = subclusterResolver.getDefaultNamespace(); + // If default Ns is not present return result from first namespace. + Set<FederationNamespaceInfo> nss = namenodeResolver.getNamespaces(); + // If no namespace is available, throw IOException. + IOException io = new IOException("No namespace available."); + + asyncComplete(null); + // If default Ns is present return result from that namespace. + if (!nsId.isEmpty()) { + asyncTry(() -> { + rpcClient.invokeSingle(nsId, method, clazz); Review Comment: Hi @hfutatzhanghb this can fix UT ```java getRPCClient().invokeSingle(nsId, method, clazz); ``` ########## hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcServer.java: ########## @@ -824,6 +865,50 @@ <T> T invokeOnNs(RemoteMethod method, Class<T> clazz, IOException ioe, throw ioe; } + <T> T invokeOnNsAsync(RemoteMethod method, Class<T> clazz, IOException ioe, + Set<FederationNamespaceInfo> nss) throws IOException { + if (nss.isEmpty()) { + throw ioe; + } + + asyncComplete(null); + Iterator<FederationNamespaceInfo> nsIterator = nss.iterator(); + asyncForEach(nsIterator, (foreach, fnInfo) -> { + String nsId = fnInfo.getNameserviceId(); + LOG.debug("Invoking {} on namespace {}", method, nsId); + asyncTry(() -> { + rpcClient.invokeSingle(nsId, method, clazz); Review Comment: Same as above. ```java getRPCClient().invokeSingle(nsId, method, clazz); ``` ########## hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcServer.java: ########## @@ -791,6 +801,37 @@ <T> T invokeAtAvailableNs(RemoteMethod method, Class<T> clazz) return invokeOnNs(method, clazz, io, nss); } + <T> T invokeAtAvailableNsAsync(RemoteMethod method, Class<T> clazz) + throws IOException { + String nsId = subclusterResolver.getDefaultNamespace(); + // If default Ns is not present return result from first namespace. + Set<FederationNamespaceInfo> nss = namenodeResolver.getNamespaces(); + // If no namespace is available, throw IOException. + IOException io = new IOException("No namespace available."); + + asyncComplete(null); Review Comment: IMO **asyncComplete(null)** is not necessary ########## hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcServer.java: ########## @@ -824,6 +865,50 @@ <T> T invokeOnNs(RemoteMethod method, Class<T> clazz, IOException ioe, throw ioe; } + <T> T invokeOnNsAsync(RemoteMethod method, Class<T> clazz, IOException ioe, + Set<FederationNamespaceInfo> nss) throws IOException { + if (nss.isEmpty()) { + throw ioe; + } + + asyncComplete(null); Review Comment: Same as above. > [ARR] RouterStoragePolicy supports asynchronous rpc. > ---------------------------------------------------- > > Key: HDFS-17596 > URL: https://issues.apache.org/jira/browse/HDFS-17596 > Project: Hadoop HDFS > Issue Type: Sub-task > Reporter: Jian Zhang > Assignee: farmmamba > Priority: Major > Labels: pull-request-available > > *Describe* > The main new addition is RouterAsyncStoragePolicy, which extends > RouterStoragePolicy so that supports asynchronous rpc. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org