[ 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