[ 
https://issues.apache.org/jira/browse/HDFS-17545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17855822#comment-17855822
 ] 

ASF GitHub Bot commented on HDFS-17545:
---------------------------------------

KeeProMise commented on code in PR #6871:
URL: https://github.com/apache/hadoop/pull/6871#discussion_r1643993096


##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcServer.java:
##########
@@ -428,6 +456,25 @@ public RouterRpcServer(Configuration conf, Router router,
     initRouterFedRename();
   }
 
+  private void initAsyncThreadPool() {
+    int asyncHandlerCount = conf.getInt(DFS_ROUTER_RPC_ASYNC_HANDLER_COUNT,
+        DFS_ROUTER_RPC_ASYNC_HANDLER_COUNT_DEFAULT);
+    int asyncResponderCount = conf.getInt(DFS_ROUTER_RPC_ASYNC_RESPONDER_COUNT,
+        DFS_ROUTER_RPC_ASYNC_RESPONDER_COUNT_DEFAULT);
+    synchronized (RouterRpcServer.class) {
+      if (asyncRouterHandler == null) {
+        LOG.info("init router async handler count: {}", asyncHandlerCount);
+        asyncRouterHandler = Executors.newFixedThreadPool(
+            asyncHandlerCount, new AsyncThreadFactory("router async handler 
"));
+      }
+      if (asyncRouterResponder == null) {
+        LOG.info("init router async responder count: {}", asyncResponderCount);
+        asyncRouterResponder = Executors.newFixedThreadPool(
+            asyncHandlerCount, new AsyncThreadFactory("router async responder 
"));

Review Comment:
   @hfutatzhanghb Yes, I will change this to asyncResponderCount later. Thank 
you for your careful review.





> [ARR] router async rpc client.
> ------------------------------
>
>                 Key: HDFS-17545
>                 URL: https://issues.apache.org/jira/browse/HDFS-17545
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>            Reporter: Jian Zhang
>            Assignee: Jian Zhang
>            Priority: Major
>              Labels: pull-request-available
>
> *Describe*
> 1. Mainly using AsyncUtil to implement {*}RouterAsyncRpcClient{*}, this class 
> extends RouterRpcClient, enabling the {*}invoiceAll{*}, {*}invoiceMethod{*}, 
> {*}invoiceSequential{*}, {*}invoiceConcurrent{*}, and *invoiceSingle* methods 
> to support asynchrony.
> 2. Use two thread pools, *asyncRouterHandler* and {*}asyncRouterResponder{*}, 
> to handle asynchronous requests and responses, respectively.
> 3. Added {*}DFS_ROUTER_RPC_ENABLE_ASYNC{*}, 
> {*}DFS_ROUTER_RPC_ASYNC_HANDLER_COUNT{*}, 
> *DFS_ROUTER_RPC_ASYNC_RESPONDER_COUNT_DEFAULT* to configure whether to use 
> async router, as well as the number of asyncRouterHandlers and 
> asyncRouterResponders.
> 4. Using *ThreadLocalContext* to maintain thread local variables, ensuring 
> that thread local variables can be correctly passed between handler, 
> asyncRouterHandler, and asyncRouterResponder.
>  
> *Test*
> Currently, I let handler wait synchronously for the response of async 
> resonder to test the function of routeraysncRpcClient.
> Note: For discussions on *AsyncUtil* and client {*}protocolPB{*}, please 
> refer to HDFS-17543 and HDFS-17544.



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

Reply via email to