You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2022/01/14 06:23:30 UTC
[iotdb] branch master_performance updated: fix
This is an automated email from the ASF dual-hosted git repository.
tanxinyu pushed a commit to branch master_performance
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master_performance by this push:
new 85cd9fa fix
85cd9fa is described below
commit 85cd9fa0d4470b39141b9278a36b341729864ba3
Author: LebronAl <TX...@gmail.com>
AuthorDate: Fri Jan 14 14:03:34 2022 +0800
fix
---
.../iotdb/cluster/client/ClientPoolFactory.java | 1 +
.../cluster/client/ClientPoolFactoryTest.java | 32 ++++++++++++++++++++++
2 files changed, 33 insertions(+)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/client/ClientPoolFactory.java b/cluster/src/main/java/org/apache/iotdb/cluster/client/ClientPoolFactory.java
index 0887992..dfd3283 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/client/ClientPoolFactory.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/client/ClientPoolFactory.java
@@ -54,6 +54,7 @@ public class ClientPoolFactory {
: new TBinaryProtocol.Factory();
poolConfig = new GenericKeyedObjectPoolConfig();
poolConfig.setMaxTotalPerKey(maxConnectionForEachNode);
+ poolConfig.setMaxIdlePerKey(maxConnectionForEachNode / 2);
poolConfig.setMaxWait(Duration.ofMillis(waitClientTimeoutMS));
poolConfig.setTestOnReturn(true);
poolConfig.setTestOnBorrow(true);
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/client/ClientPoolFactoryTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/client/ClientPoolFactoryTest.java
index f1e313e..715ebfa 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/client/ClientPoolFactoryTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/client/ClientPoolFactoryTest.java
@@ -130,6 +130,38 @@ public class ClientPoolFactoryTest {
}
@Test
+ public void poolIdleObjectEvictionTest() throws Exception {
+ GenericKeyedObjectPool<Node, RaftService.AsyncClient> pool =
+ clientPoolFactory.createAsyncDataPool(ClientCategory.DATA);
+
+ int oldMaxTotalPerKey = pool.getMaxTotalPerKey();
+ pool.setMaxTotalPerKey(2 * pool.getMaxIdlePerKey());
+
+ Node node = constructDefaultNode();
+ List<RaftService.AsyncClient> clientList = new ArrayList<>();
+ for (int i = 0; i < pool.getMaxTotalPerKey(); i++) {
+ RaftService.AsyncClient client = pool.borrowObject(node);
+ Assert.assertNotNull(client);
+ clientList.add(client);
+ }
+
+ for (RaftService.AsyncClient client : clientList) {
+ pool.returnObject(node, client);
+ }
+
+ Assert.assertEquals(0, pool.getNumActive(node));
+ Assert.assertEquals(pool.getMaxIdlePerKey(), pool.getNumIdle(node));
+
+ for (int i = 0; i < pool.getMaxIdlePerKey(); i++) {
+ RaftService.AsyncClient client = pool.borrowObject(node);
+ Assert.assertNotNull(client);
+ Assert.assertTrue(clientList.contains(client));
+ }
+
+ pool.setMaxTotalPerKey(oldMaxTotalPerKey);
+ }
+
+ @Test
public void createAsyncDataClientTest() throws Exception {
GenericKeyedObjectPool<Node, RaftService.AsyncClient> pool =
clientPoolFactory.createAsyncDataPool(ClientCategory.DATA);