DRILL-8132: Improvement of RPC (#2464)

Co-authored-by: feiteng.wtf <feiteng.wtf@cainiao.com>
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlClient.java b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlClient.java
index d74402a..b95d42b 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlClient.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlClient.java
@@ -50,7 +50,7 @@
     super(ControlRpcConfig.getMapping(config.getBootstrapContext().getConfig(),
         config.getBootstrapContext().getExecutor()),
         config.getAllocator().getAsByteBufAllocator(),
-        config.getBootstrapContext().getBitLoopGroup(),
+        config.getBootstrapContext().getControlLoopGroup(),
         RpcType.HANDSHAKE,
         BitControlHandshake.class,
         BitControlHandshake.PARSER);
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlServer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlServer.java
index d8cc3fb..a70cfb2 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlServer.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/control/ControlServer.java
@@ -41,7 +41,7 @@
     super(ControlRpcConfig.getMapping(config.getBootstrapContext().getConfig(),
         config.getBootstrapContext().getExecutor()),
         config.getAllocator().getAsByteBufAllocator(),
-        config.getBootstrapContext().getBitLoopGroup());
+        config.getBootstrapContext().getControlLoopGroup());
     this.config = config;
     this.connectionRegistry = connectionRegistry;
   }
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataClient.java b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataClient.java
index da6e176..306ca90 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataClient.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataClient.java
@@ -51,7 +51,7 @@
         DataRpcConfig.getMapping(config.getBootstrapContext().getConfig(),
             config.getBootstrapContext().getExecutor()),
         config.getAllocator().getAsByteBufAllocator(),
-        config.getBootstrapContext().getBitClientLoopGroup(),
+        config.getBootstrapContext().getDataClientLoopGroup(),
         RpcType.HANDSHAKE,
         BitServerHandshake.class,
         BitServerHandshake.PARSER);
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataServer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataServer.java
index c4c8490..dc593e3 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataServer.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/data/DataServer.java
@@ -41,7 +41,7 @@
         DataRpcConfig.getMapping(config.getBootstrapContext().getConfig(),
             config.getBootstrapContext().getExecutor()),
         config.getAllocator().getAsByteBufAllocator(),
-        config.getBootstrapContext().getBitLoopGroup());
+        config.getBootstrapContext().getDataServerLoopGroup());
     this.config = config;
   }
 
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/BootStrapContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/BootStrapContext.java
index b090857..a353d81 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/BootStrapContext.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/BootStrapContext.java
@@ -63,8 +63,9 @@
   private final DrillConfig config;
   private final CaseInsensitiveMap<OptionDefinition> definitions;
   private final AuthenticatorProvider authProvider;
-  private final EventLoopGroup loop;
-  private final EventLoopGroup loop2;
+  private final EventLoopGroup controlLoopGroup;
+  private final EventLoopGroup dataClientLoopGroup;
+  private final EventLoopGroup dataServerLoopGroup;
   private final MetricRegistry metrics;
   private final BufferAllocator allocator;
   private final ScanResult classpathScan;
@@ -81,8 +82,9 @@
     this.hostName = getCanonicalHostName();
     login(config);
     this.authProvider = new AuthenticatorProviderImpl(config, classpathScan);
-    this.loop = TransportCheck.createEventLoopGroup(config.getInt(ExecConstants.BIT_SERVER_RPC_THREADS), "BitServer-");
-    this.loop2 = TransportCheck.createEventLoopGroup(config.getInt(ExecConstants.BIT_SERVER_RPC_THREADS), "BitClient-");
+    this.controlLoopGroup = TransportCheck.createEventLoopGroup(config.getInt(ExecConstants.BIT_SERVER_RPC_THREADS), "Control-");
+    this.dataClientLoopGroup = TransportCheck.createEventLoopGroup(config.getInt(ExecConstants.BIT_SERVER_RPC_THREADS), "DataClient-");
+    this.dataServerLoopGroup = TransportCheck.createEventLoopGroup(config.getInt(ExecConstants.BIT_SERVER_RPC_THREADS), "DataServer-");
     // Note that metrics are stored in a static instance
     this.metrics = DrillMetrics.getRegistry();
     this.allocator = RootAllocatorFactory.newRoot(config);
@@ -195,12 +197,16 @@
     return definitions;
   }
 
-  public EventLoopGroup getBitLoopGroup() {
-    return loop;
+  public EventLoopGroup getControlLoopGroup() {
+    return controlLoopGroup;
   }
 
-  public EventLoopGroup getBitClientLoopGroup() {
-    return loop2;
+  public EventLoopGroup getDataClientLoopGroup() {
+    return dataClientLoopGroup;
+  }
+
+  public EventLoopGroup getDataServerLoopGroup() {
+    return dataClientLoopGroup;
   }
 
   public MetricRegistry getMetrics() {
@@ -258,9 +264,9 @@
 
     try {
       AutoCloseables.close(allocator, authProvider);
-      shutdown(loop);
-      shutdown(loop2);
-
+      shutdown(controlLoopGroup);
+      shutdown(dataClientLoopGroup);
+      shutdown(dataServerLoopGroup);
     } catch (final Exception e) {
       logger.error("Error while closing", e);
     }
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
index bcc446b..e17b4fa 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
@@ -227,7 +227,7 @@
   public OAuthTokenProvider getoAuthTokenProvider() { return oAuthTokenProvider; }
 
   public EventLoopGroup getBitLoopGroup() {
-    return context.getBitLoopGroup();
+    return context.getControlLoopGroup();
   }
 
   public DataConnectionCreator getDataConnectionsPool() {
diff --git a/exec/java-exec/src/main/resources/drill-module.conf b/exec/java-exec/src/main/resources/drill-module.conf
index d5277ff..e36b4ff 100644
--- a/exec/java-exec/src/main/resources/drill-module.conf
+++ b/exec/java-exec/src/main/resources/drill-module.conf
@@ -91,7 +91,7 @@
           count: 7200,
           delay: 500
         },
-        threads: 10
+        threads: 8
         memory: {
           control: {
             reservation: 0,