You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by er...@apache.org on 2023/01/12 09:48:38 UTC
[iotdb] 01/02: Temp save optimizing session IT
This is an automated email from the ASF dual-hosted git repository.
ericpai pushed a commit to branch improve/iotdb-5410
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6c4c54e992247da8019f1aa22d1cb51a2b360f2e
Author: ericpai <er...@hotmail.com>
AuthorDate: Thu Jan 12 10:05:22 2023 +0800
Temp save optimizing session IT
---
.../apache/iotdb/it/env/cluster/AbstractEnv.java | 20 ++-
.../iotdb/it/env/remote/RemoteServerEnv.java | 40 +++++
.../java/org/apache/iotdb/itbase/env/BaseEnv.java | 117 +-------------
.../session/it/IoTDBSessionAlignedInsertIT.java | 2 -
.../iotdb/session/it/IoTDBSessionComplexIT.java | 2 -
.../it/IoTDBSessionDisableMemControlIT.java | 2 -
.../iotdb/session/it/IoTDBSessionInsertNullIT.java | 2 -
.../session/it/IoTDBSessionSchemaTemplateIT.java | 2 -
.../iotdb/session/it/IoTDBSessionSimpleIT.java | 2 -
.../session/it/IoTDBSessionSyntaxConventionIT.java | 2 -
.../iotdb/session/it/pool/SessionPoolIT.java | 176 ++++++++-------------
.../src/test/resources/iotdb-datanode.properties | 24 ---
.../src/test/resources/logback-test.xml | 2 +
13 files changed, 134 insertions(+), 259 deletions(-)
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/AbstractEnv.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/AbstractEnv.java
index eade9e47d0..c0b36c0049 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/AbstractEnv.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/AbstractEnv.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService;
import org.apache.iotdb.confignode.rpc.thrift.TShowClusterResp;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.SessionConfig;
+import org.apache.iotdb.isession.pool.ISessionPool;
import org.apache.iotdb.it.env.EnvFactory;
import org.apache.iotdb.it.framework.IoTDBTestLogger;
import org.apache.iotdb.itbase.env.BaseEnv;
@@ -346,7 +347,24 @@ public abstract class AbstractEnv implements BaseEnv {
}
@Override
- public SessionPool getSessionPool(int maxSize) {
+ public ISession getSessionConnection(List<String> nodeUrls) throws IoTDBConnectionException {
+ Session session =
+ new Session(
+ nodeUrls,
+ SessionConfig.DEFAULT_USER,
+ SessionConfig.DEFAULT_PASSWORD,
+ SessionConfig.DEFAULT_FETCH_SIZE,
+ null,
+ SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
+ SessionConfig.DEFAULT_MAX_FRAME_SIZE,
+ SessionConfig.DEFAULT_REDIRECTION_MODE,
+ SessionConfig.DEFAULT_VERSION);
+ session.open();
+ return session;
+ }
+
+ @Override
+ public ISessionPool getSessionPool(int maxSize) {
DataNodeWrapper dataNode =
this.dataNodeWrapperList.get(rand.nextInt(this.dataNodeWrapperList.size()));
return new SessionPool(
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteServerEnv.java b/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteServerEnv.java
index e1844a5beb..78e88fc9d2 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteServerEnv.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/remote/RemoteServerEnv.java
@@ -26,6 +26,8 @@ import org.apache.iotdb.commons.client.sync.SyncConfigNodeIServiceClient;
import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService;
import org.apache.iotdb.isession.ISession;
+import org.apache.iotdb.isession.SessionConfig;
+import org.apache.iotdb.isession.pool.ISessionPool;
import org.apache.iotdb.it.env.EnvFactory;
import org.apache.iotdb.it.env.cluster.ConfigNodeWrapper;
import org.apache.iotdb.it.env.cluster.DataNodeWrapper;
@@ -36,11 +38,13 @@ import org.apache.iotdb.jdbc.Config;
import org.apache.iotdb.jdbc.Constant;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.session.Session;
+import org.apache.iotdb.session.pool.SessionPool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Collections;
import java.util.List;
import static org.apache.iotdb.jdbc.Config.VERSION;
@@ -150,6 +154,25 @@ public class RemoteServerEnv implements BaseEnv {
return clientManager.borrowClient(new TEndPoint(ip_addr, 10710));
}
+ @Override
+ public ISessionPool getSessionPool(int maxSize) {
+ return new SessionPool(
+ SessionConfig.DEFAULT_HOST,
+ SessionConfig.DEFAULT_PORT,
+ SessionConfig.DEFAULT_USER,
+ SessionConfig.DEFAULT_PASSWORD,
+ maxSize,
+ SessionConfig.DEFAULT_FETCH_SIZE,
+ 60_000,
+ false,
+ null,
+ SessionConfig.DEFAULT_REDIRECTION_MODE,
+ SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
+ SessionConfig.DEFAULT_VERSION,
+ SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
+ SessionConfig.DEFAULT_MAX_FRAME_SIZE);
+ }
+
@Override
public ISession getSessionConnection() throws IoTDBConnectionException {
Session session = new Session(ip_addr, Integer.parseInt(port));
@@ -157,6 +180,23 @@ public class RemoteServerEnv implements BaseEnv {
return session;
}
+ @Override
+ public ISession getSessionConnection(List<String> nodeUrls) throws IoTDBConnectionException {
+ Session session =
+ new Session(
+ Collections.singletonList(ip_addr + ":" + port),
+ SessionConfig.DEFAULT_USER,
+ SessionConfig.DEFAULT_PASSWORD,
+ SessionConfig.DEFAULT_FETCH_SIZE,
+ null,
+ SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
+ SessionConfig.DEFAULT_MAX_FRAME_SIZE,
+ SessionConfig.DEFAULT_REDIRECTION_MODE,
+ SessionConfig.DEFAULT_VERSION);
+ session.open();
+ return session;
+ }
+
@Override
public int getLeaderConfigNodeIndex() {
return -1;
diff --git a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java
index 4132e7b6db..6947ea63c0 100644
--- a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java
+++ b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java
@@ -22,19 +22,15 @@ import org.apache.iotdb.commons.client.exception.ClientManagerException;
import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService;
import org.apache.iotdb.isession.ISession;
-import org.apache.iotdb.isession.SessionConfig;
-import org.apache.iotdb.isession.util.Version;
+import org.apache.iotdb.isession.pool.ISessionPool;
import org.apache.iotdb.it.env.cluster.ConfigNodeWrapper;
import org.apache.iotdb.it.env.cluster.DataNodeWrapper;
import org.apache.iotdb.jdbc.Constant;
import org.apache.iotdb.rpc.IoTDBConnectionException;
-import org.apache.iotdb.session.Session;
-import org.apache.iotdb.session.pool.SessionPool;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
-import java.time.ZoneId;
import java.util.List;
public interface BaseEnv {
@@ -80,116 +76,11 @@ public interface BaseEnv {
IConfigNodeRPCService.Iface getLeaderConfigNodeConnection()
throws ClientManagerException, IOException, InterruptedException;
- default ISession getSessionConnection() throws IoTDBConnectionException {
- return getSessionConnection(
- SessionConfig.DEFAULT_HOST,
- SessionConfig.DEFAULT_PORT,
- SessionConfig.DEFAULT_USER,
- SessionConfig.DEFAULT_PASSWORD,
- SessionConfig.DEFAULT_FETCH_SIZE,
- null,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE,
- SessionConfig.DEFAULT_REDIRECTION_MODE,
- SessionConfig.DEFAULT_VERSION);
- }
-
- default ISession getSessionConnection(
- String host,
- int rpcPort,
- String username,
- String password,
- int fetchSize,
- ZoneId zoneId,
- int thriftDefaultBufferSize,
- int thriftMaxFrameSize,
- boolean enableRedirection,
- Version version)
- throws IoTDBConnectionException {
- Session session =
- new Session(
- host,
- rpcPort,
- username,
- password,
- fetchSize,
- zoneId,
- thriftDefaultBufferSize,
- thriftMaxFrameSize,
- enableRedirection,
- version);
-
- session.open();
- return session;
- }
+ ISessionPool getSessionPool(int maxSize);
- default ISession getSessionConnection(List<String> nodeUrls) throws IoTDBConnectionException {
- Session session =
- new Session(
- nodeUrls,
- SessionConfig.DEFAULT_USER,
- SessionConfig.DEFAULT_PASSWORD,
- SessionConfig.DEFAULT_FETCH_SIZE,
- null,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE,
- SessionConfig.DEFAULT_REDIRECTION_MODE,
- SessionConfig.DEFAULT_VERSION);
- session.open();
- return session;
- }
+ ISession getSessionConnection() throws IoTDBConnectionException;
- default SessionPool getSessionPool(int maxSize) {
- return getSessionPool(
- SessionConfig.DEFAULT_HOST,
- SessionConfig.DEFAULT_PORT,
- SessionConfig.DEFAULT_USER,
- SessionConfig.DEFAULT_PASSWORD,
- maxSize,
- SessionConfig.DEFAULT_FETCH_SIZE,
- 60_000,
- false,
- null,
- SessionConfig.DEFAULT_REDIRECTION_MODE,
- SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
- SessionConfig.DEFAULT_VERSION,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE);
- }
-
- default SessionPool getSessionPool(
- String host,
- int port,
- String user,
- String password,
- int maxSize,
- int fetchSize,
- long waitToGetSessionTimeoutInMs,
- boolean enableCompression,
- ZoneId zoneId,
- boolean enableRedirection,
- int connectionTimeoutInMs,
- Version version,
- int thriftDefaultBufferSize,
- int thriftMaxFrameSize) {
- SessionPool pool =
- new SessionPool(
- host,
- port,
- user,
- password,
- maxSize,
- fetchSize,
- waitToGetSessionTimeoutInMs,
- enableCompression,
- zoneId,
- enableRedirection,
- connectionTimeoutInMs,
- version,
- thriftDefaultBufferSize,
- thriftMaxFrameSize);
- return pool;
- }
+ ISession getSessionConnection(List<String> nodeUrls) throws IoTDBConnectionException;
/**
* Get the index of the ConfigNode leader.
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java
index 3b18212821..94046d1b22 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.SessionDataSet;
import org.apache.iotdb.it.env.EnvFactory;
@@ -55,7 +54,6 @@ public class IoTDBSessionAlignedInsertIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().getConfig().getCommonConfig().setMaxDegreeOfIndexNode(3);
EnvFactory.getEnv().initClusterEnvironment();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java
index 19e49c7904..e44c40ce99 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.SessionDataSet;
@@ -62,7 +61,6 @@ import static org.junit.Assert.fail;
public class IoTDBSessionComplexIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().initClusterEnvironment();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java
index 3317a44678..aec033b3dc 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.SessionDataSet;
import org.apache.iotdb.it.env.EnvFactory;
@@ -61,7 +60,6 @@ public class IoTDBSessionDisableMemControlIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().getConfig().getCommonConfig().setEnableMemControl(false);
EnvFactory.getEnv().initClusterEnvironment();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
index 67b5e8d486..a77cf3e52c 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.SessionDataSet;
import org.apache.iotdb.it.env.EnvFactory;
@@ -57,7 +56,6 @@ public class IoTDBSessionInsertNullIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().initClusterEnvironment();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
index 8e4988305f..42a33747a0 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.template.Template;
import org.apache.iotdb.isession.template.TemplateNode;
@@ -57,7 +56,6 @@ public class IoTDBSessionSchemaTemplateIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().initClusterEnvironment();
session = EnvFactory.getEnv().getSessionConnection();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
index b7b9bd6090..bf9f07ea2e 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.conf.OperationType;
import org.apache.iotdb.isession.ISession;
@@ -76,7 +75,6 @@ public class IoTDBSessionSimpleIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().initClusterEnvironment();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java
index de7605d1c6..1940efc8c6 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.session.it;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.isession.ISession;
import org.apache.iotdb.isession.SessionDataSet;
import org.apache.iotdb.it.env.EnvFactory;
@@ -54,7 +53,6 @@ public class IoTDBSessionSyntaxConventionIT {
@Before
public void setUp() throws Exception {
- System.setProperty(IoTDBConstant.IOTDB_CONF, "src/test/resources/");
EnvFactory.getEnv().initClusterEnvironment();
}
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
index 2e90cfe16b..5e729bf073 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
@@ -18,25 +18,37 @@
*/
package org.apache.iotdb.session.it.pool;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
+import org.apache.iotdb.commons.client.exception.ClientManagerException;
+import org.apache.iotdb.commons.client.sync.SyncConfigNodeIServiceClient;
+import org.apache.iotdb.commons.cluster.NodeStatus;
+import org.apache.iotdb.confignode.rpc.thrift.TDataNodeInfo;
+import org.apache.iotdb.confignode.rpc.thrift.TShowDataNodesResp;
import org.apache.iotdb.isession.SessionConfig;
+import org.apache.iotdb.isession.pool.ISessionPool;
import org.apache.iotdb.isession.pool.SessionDataSetWrapper;
import org.apache.iotdb.isession.util.Version;
import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.it.env.cluster.DataNodeWrapper;
import org.apache.iotdb.it.framework.IoTDBTestRunner;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.session.pool.SessionPool;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.thrift.TException;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.ArrayList;
@@ -53,6 +65,7 @@ import static org.junit.Assert.fail;
// this test is not for testing the correctness of Session API. So we just implement one of the API.
@RunWith(IoTDBTestRunner.class)
+@Category({LocalStandaloneIT.class, ClusterIT.class})
public class SessionPoolIT {
private static final Logger logger = LoggerFactory.getLogger(SessionPoolIT.class);
@@ -60,19 +73,18 @@ public class SessionPoolIT {
@Before
public void setUp() throws Exception {
- EnvFactory.getEnv().initClusterEnvironment();
- EnvironmentUtils.envSetUp();
+ // As this IT is only testing SessionPool itself, there's no need to launch a large cluster
+ EnvFactory.getEnv().initClusterEnvironment(1, 1);
}
@After
public void tearDown() throws Exception {
- EnvironmentUtils.cleanEnv();
EnvFactory.getEnv().cleanClusterEnvironment();
}
@Test
public void insert() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
ExecutorService service = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
final int no = i;
@@ -105,7 +117,7 @@ public class SessionPoolIT {
@Test
public void incorrectSQL() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
assertEquals(0, pool.currentAvailableSize());
try {
pool.insertRecord(
@@ -124,7 +136,7 @@ public class SessionPoolIT {
@Test
public void incorrectExecuteQueryStatement() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
ExecutorService service = Executors.newFixedThreadPool(10);
write10Data(pool, true);
// now let's query
@@ -157,19 +169,19 @@ public class SessionPoolIT {
@Test
public void executeQueryStatement() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
correctQuery(pool, DEFAULT_QUERY_TIMEOUT);
pool.close();
}
@Test
public void executeQueryStatementWithTimeout() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
correctQuery(pool, 2000);
pool.close();
}
- private void correctQuery(SessionPool pool, long timeoutInMs) {
+ private void correctQuery(ISessionPool pool, long timeoutInMs) {
ExecutorService service = Executors.newFixedThreadPool(10);
write10Data(pool, true);
// now let's query
@@ -207,7 +219,7 @@ public class SessionPoolIT {
@Test
public void executeRawDataQuery() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
ExecutorService service = Executors.newFixedThreadPool(10);
write10Data(pool, true);
List<String> pathList = new ArrayList<>();
@@ -241,30 +253,14 @@ public class SessionPoolIT {
}
@Test
- @Ignore
- public void tryIfTheServerIsRestart() {
- SessionPool pool =
- new SessionPool(
- "127.0.0.1",
- 6667,
- "root",
- "root",
- 3,
- 1,
- 6000,
- false,
- null,
- false,
- SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
- SessionConfig.DEFAULT_VERSION,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE);
- write10Data(pool, true);
+ public void tryIfTheServerIsRestart()
+ throws InterruptedException, TException, ClientManagerException, IOException {
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
SessionDataSetWrapper wrapper = null;
try {
wrapper = pool.executeQueryStatement("select * from root.sg1.d1 where time > 1");
- // TODO: replace stopDaemon() and restartDaemon() with new methods in Env.
- EnvironmentUtils.stopDaemon();
+ EnvFactory.getEnv().getDataNodeWrapper(0).stop();
+ EnvFactory.getEnv().getDataNodeWrapper(0).waitingToShutDown();
// user does not know what happens.
while (wrapper.hasNext()) {
wrapper.next();
@@ -272,25 +268,12 @@ public class SessionPoolIT {
} catch (IoTDBConnectionException e) {
pool.closeResultSet(wrapper);
pool.close();
- EnvironmentUtils.stopDaemon();
-
- EnvironmentUtils.reactiveDaemon();
- pool =
- new SessionPool(
- "127.0.0.1",
- 6667,
- "root",
- "root",
- 3,
- 1,
- 6000,
- false,
- null,
- false,
- SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
- SessionConfig.DEFAULT_VERSION,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE);
+ EnvFactory.getEnv().getDataNodeWrapper(0).stop();
+ EnvFactory.getEnv().getDataNodeWrapper(0).waitingToShutDown();
+ Assert.assertTrue(waitDataNodeStatusUnknown(EnvFactory.getEnv().getDataNodeWrapper(0)));
+ EnvFactory.getEnv().getDataNodeWrapper(0).start();
+ TimeUnit.SECONDS.sleep(10);
+ pool = EnvFactory.getEnv().getSessionPool(3);
correctQuery(pool, DEFAULT_QUERY_TIMEOUT);
pool.close();
return;
@@ -308,24 +291,11 @@ public class SessionPoolIT {
} catch (IoTDBConnectionException ec) {
pool.closeResultSet(wrapper);
pool.close();
- EnvironmentUtils.stopDaemon();
- EnvironmentUtils.reactiveDaemon();
- pool =
- new SessionPool(
- "127.0.0.1",
- 6667,
- "root",
- "root",
- 3,
- 1,
- 6000,
- false,
- null,
- false,
- SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
- SessionConfig.DEFAULT_VERSION,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE);
+ EnvFactory.getEnv().getDataNodeWrapper(0).stop();
+ EnvFactory.getEnv().getDataNodeWrapper(0).waitingToShutDown();
+ Assert.assertTrue(waitDataNodeStatusUnknown(EnvFactory.getEnv().getDataNodeWrapper(0)));
+ EnvFactory.getEnv().getDataNodeWrapper(0).start();
+ pool = EnvFactory.getEnv().getSessionPool(3);
correctQuery(pool, DEFAULT_QUERY_TIMEOUT);
pool.close();
} catch (StatementExecutionException es) {
@@ -383,53 +353,25 @@ public class SessionPoolIT {
}
@Test
- @Ignore
- public void restart() {
- SessionPool pool =
- new SessionPool(
- "127.0.0.1",
- 6667,
- "root",
- "root",
- 1,
- 1,
- 1000,
- false,
- null,
- false,
- SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
- SessionConfig.DEFAULT_VERSION,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE);
+ public void restart()
+ throws TException, ClientManagerException, IOException, InterruptedException {
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(1);
write10Data(pool, true);
// stop the server.
pool.close();
- EnvironmentUtils.stopDaemon();
- pool =
- new SessionPool(
- "127.0.0.1",
- 6667,
- "root",
- "root",
- 1,
- 1,
- 1000,
- false,
- null,
- false,
- SessionConfig.DEFAULT_CONNECTION_TIMEOUT_MS,
- SessionConfig.DEFAULT_VERSION,
- SessionConfig.DEFAULT_INITIAL_BUFFER_CAPACITY,
- SessionConfig.DEFAULT_MAX_FRAME_SIZE);
+ EnvFactory.getEnv().getDataNodeWrapper(0).stop();
+ EnvFactory.getEnv().getDataNodeWrapper(0).waitingToShutDown();
+ pool = EnvFactory.getEnv().getSessionPool(1);
// all this ten data will fail.
write10Data(pool, false);
// restart the server
- EnvironmentUtils.reactiveDaemon();
+ Assert.assertTrue(waitDataNodeStatusUnknown(EnvFactory.getEnv().getDataNodeWrapper(0)));
+ EnvFactory.getEnv().getDataNodeWrapper(0).start();
write10Data(pool, true);
pool.close();
}
- private void write10Data(SessionPool pool, boolean failWhenThrowException) {
+ private void write10Data(ISessionPool pool, boolean failWhenThrowException) {
for (int i = 0; i < 10; i++) {
try {
pool.insertRecord(
@@ -449,7 +391,7 @@ public class SessionPoolIT {
@Test
public void testClose() {
- SessionPool pool = EnvFactory.getEnv().getSessionPool(3);
+ ISessionPool pool = EnvFactory.getEnv().getSessionPool(3);
pool.close();
try {
pool.insertRecord(
@@ -537,4 +479,24 @@ public class SessionPoolIT {
pool.close();
}
}
+
+ private boolean waitDataNodeStatusUnknown(DataNodeWrapper dataNode)
+ throws ClientManagerException, IOException, InterruptedException, TException {
+ try (SyncConfigNodeIServiceClient client =
+ (SyncConfigNodeIServiceClient) EnvFactory.getEnv().getLeaderConfigNodeConnection()) {
+ // At least wait 20 seconds
+ for (int count = 0; count < 30; count++) {
+ TShowDataNodesResp showDataNodesResp = client.showDataNodes();
+ for (TDataNodeInfo dataNodeInfo : showDataNodesResp.getDataNodesInfoList()) {
+ if (dataNodeInfo.getRpcAddresss().equals(dataNode.getIp())
+ && dataNodeInfo.getRpcPort() == dataNode.getPort()
+ && NodeStatus.Unknown.getStatus().equals(dataNodeInfo.getStatus())) {
+ return true;
+ }
+ }
+ TimeUnit.SECONDS.sleep(1);
+ }
+ }
+ return false;
+ }
}
diff --git a/integration-test/src/test/resources/iotdb-datanode.properties b/integration-test/src/test/resources/iotdb-datanode.properties
deleted file mode 100644
index cc01ac1336..0000000000
--- a/integration-test/src/test/resources/iotdb-datanode.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-
-base_dir=target/tmp
-dn_data_dirs=target/data
-dn_wal_dirs=target/wal
-sync_dir=target/sync
\ No newline at end of file
diff --git a/integration-test/src/test/resources/logback-test.xml b/integration-test/src/test/resources/logback-test.xml
index e73d764256..a1cce6aefe 100644
--- a/integration-test/src/test/resources/logback-test.xml
+++ b/integration-test/src/test/resources/logback-test.xml
@@ -51,6 +51,8 @@
<logger name="org.apache.iotdb.db.service.DataNode" level="WARN"/>
<logger name="org.apache.iotdb.db.service.RPCService" level="INFO"/>
<logger name="org.apache.iotdb.db.service.MQTTService" level="INFO"/>
+ <logger name="org.apache.iotdb.db.conf.IoTDBDescriptor" level="WARN"/>
+ <logger name="org.apache.iotdb.db.conf.TSFileDescriptor" level="WARN"/>
<logger name="DETAILED_FAILURE_QUERY_TRACE" level="ERROR"/>
<root level="INFO">
<appender-ref ref="stdout"/>