This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 657230f25b7 IT: revert some changes in restart IT to make the error
log clear when failed to restart (#12066)
657230f25b7 is described below
commit 657230f25b7899b7a66cd8b1e751b540cbae7f02
Author: YuFengLiu <[email protected]>
AuthorDate: Mon Feb 26 18:54:09 2024 +0800
IT: revert some changes in restart IT to make the error log clear when
failed to restart (#12066)
---
.../iotdb/it/env/cluster/env/AbstractEnv.java | 53 +++++++++++-----------
.../it/cluster/IoTDBClusterRestartIT.java | 5 +-
.../org/apache/iotdb/db/it/IoTDBRecoverIT.java | 4 +-
.../apache/iotdb/db/it/IoTDBRecoverUnclosedIT.java | 3 +-
.../org/apache/iotdb/db/it/utils/TestUtils.java | 4 +-
.../apache/iotdb/pipe/it/IoTDBPipeClusterIT.java | 14 +++---
.../apache/iotdb/pipe/it/IoTDBPipeLifeCycleIT.java | 10 ++--
7 files changed, 46 insertions(+), 47 deletions(-)
diff --git
a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java
b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java
index b7e4c4dcb50..75e7cfb2572 100644
---
a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java
+++
b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java
@@ -264,29 +264,28 @@ public abstract class AbstractEnv implements BaseEnv {
return result;
}
- public boolean checkClusterStatusWithoutUnknown() {
- return checkClusterStatus(
- nodeStatusMap ->
nodeStatusMap.values().stream().noneMatch("Unknown"::equals))
- && testJDBCConnection();
- }
-
- public boolean checkClusterStatusOneUnknownOtherRunning() {
- return checkClusterStatus(
- nodeStatus -> {
- Map<String, Integer> count = countNodeStatus(nodeStatus);
- return count.getOrDefault("Unknown", 0) == 1
- && count.getOrDefault("Running", 0) == nodeStatus.size() - 1;
- })
- && testJDBCConnection();
+ public void checkClusterStatusWithoutUnknown() {
+ checkClusterStatus(
+ nodeStatusMap ->
nodeStatusMap.values().stream().noneMatch("Unknown"::equals));
+ testJDBCConnection();
+ }
+
+ public void checkClusterStatusOneUnknownOtherRunning() {
+ checkClusterStatus(
+ nodeStatus -> {
+ Map<String, Integer> count = countNodeStatus(nodeStatus);
+ return count.getOrDefault("Unknown", 0) == 1
+ && count.getOrDefault("Running", 0) == nodeStatus.size() - 1;
+ });
+ testJDBCConnection();
}
/**
- * Returns whether the all nodes' status all match the provided predicate.
check nodes with RPC
+ * check whether all nodes' status match the provided predicate with RPC.
after retryCount times,
+ * if the status of all nodes still not match the predicate, throw
AssertionError.
*
* @param statusCheck the predicate to test the status of nodes
- * @return {@code true} if all nodes' status of the cluster match the
provided predicate,
- * otherwise {@code false}
*/
- public boolean checkClusterStatus(Predicate<Map<Integer, String>>
statusCheck) {
+ public void checkClusterStatus(Predicate<Map<Integer, String>> statusCheck) {
logger.info("Testing cluster environment...");
TShowClusterResp showClusterResp;
Exception lastException = null;
@@ -316,7 +315,7 @@ public abstract class AbstractEnv implements BaseEnv {
if (flag) {
logger.info("The cluster is now ready for testing!");
- return true;
+ return;
}
} catch (Exception e) {
lastException = e;
@@ -330,12 +329,12 @@ public abstract class AbstractEnv implements BaseEnv {
}
if (lastException != null) {
logger.error(
- "exception in testWorking of ClusterID, message: {}",
+ "exception in test Cluster with RPC, message: {}",
lastException.getMessage(),
lastException);
}
- logger.info("checkNodeHeartbeat failed after {} retries", retryCount);
- return false;
+ throw new AssertionError(
+ String.format("After %d times retry, the cluster can't work!",
retryCount));
}
@Override
@@ -488,7 +487,9 @@ public abstract class AbstractEnv implements BaseEnv {
// because it is hard to add retry and handle exception when getting jdbc
connections in
// getWriteConnectionWithSpecifiedDataNode and getReadConnections.
// so use this function to add retry when cluster is ready.
- protected boolean testJDBCConnection() {
+ // after retryCount times, if the jdbc can't connect, throw
+ // AssertionError.
+ protected void testJDBCConnection() {
logger.info("Testing JDBC connection...");
List<String> endpoints =
dataNodeWrapperList.stream()
@@ -526,10 +527,10 @@ public abstract class AbstractEnv implements BaseEnv {
try {
testDelegate.requestAll();
} catch (Exception e) {
- logger.error("Failed to connect to DataNode", e);
- return false;
+ logger.error("exception in test Cluster with RPC, message: {}",
e.getMessage(), e);
+ throw new AssertionError(
+ String.format("After %d times retry, the cluster can't work!",
retryCount));
}
- return true;
}
private String getParam(Constant.Version version, int timeout) {
diff --git
a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
index f05274f1289..29160045864 100644
---
a/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/confignode/it/cluster/IoTDBClusterRestartIT.java
@@ -104,7 +104,7 @@ public class IoTDBClusterRestartIT {
EnvFactory.getEnv().startAllConfigNodes();
logger.info("Restarting all DataNodes...");
EnvFactory.getEnv().startAllDataNodes();
- Assert.assertTrue(((AbstractEnv)
EnvFactory.getEnv()).checkClusterStatusWithoutUnknown());
+ ((AbstractEnv) EnvFactory.getEnv()).checkClusterStatusWithoutUnknown();
}
@Test
@@ -228,8 +228,7 @@ public class IoTDBClusterRestartIT {
}
EnvFactory.getEnv().startAllDataNodes();
logger.info("Restarted");
- Assert.assertTrue(
- ((AbstractEnv)
EnvFactory.getEnv()).checkClusterStatusOneUnknownOtherRunning());
+ ((AbstractEnv)
EnvFactory.getEnv()).checkClusterStatusOneUnknownOtherRunning();
logger.info("Working without Seed-ConfigNode");
}
}
diff --git
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverIT.java
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverIT.java
index 2b6c558618d..7c4d87511d8 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverIT.java
@@ -109,7 +109,7 @@ public class IoTDBRecoverIT {
EnvFactory.getEnv().startAllDataNodes();
logger.info("All DataNodes are started");
// check cluster whether restart
- Assert.assertTrue(((AbstractEnv)
EnvFactory.getEnv()).checkClusterStatusWithoutUnknown());
+ ((AbstractEnv) EnvFactory.getEnv()).checkClusterStatusWithoutUnknown();
String[] retArray = new String[] {"0,2", "0,4", "0,3"};
try (Connection connection = EnvFactory.getEnv().getConnection();
Statement statement = connection.createStatement()) {
@@ -200,7 +200,7 @@ public class IoTDBRecoverIT {
EnvFactory.getEnv().startAllDataNodes();
logger.info("All DataNodes are started");
// wait for cluster to start and check
- Assert.assertTrue(((AbstractEnv)
EnvFactory.getEnv()).checkClusterStatusWithoutUnknown());
+ ((AbstractEnv) EnvFactory.getEnv()).checkClusterStatusWithoutUnknown();
// count test
String[] retArray = new String[] {"0,2001,2001,2001,2001",
"0,7500,7500,7500,7500"};
try (Connection connection = EnvFactory.getEnv().getConnection();
diff --git
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverUnclosedIT.java
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverUnclosedIT.java
index 8478bf290da..01a3c791876 100644
---
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverUnclosedIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRecoverUnclosedIT.java
@@ -26,7 +26,6 @@ import org.apache.iotdb.itbase.category.ClusterIT;
import org.apache.iotdb.itbase.category.LocalStandaloneIT;
import org.junit.After;
-import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -149,7 +148,7 @@ public class IoTDBRecoverUnclosedIT {
EnvFactory.getEnv().startAllDataNodes();
logger.info("All DataNodes are started");
// wait for cluster to start and check
- Assert.assertTrue(((AbstractEnv)
EnvFactory.getEnv()).checkClusterStatusWithoutUnknown());
+ ((AbstractEnv) EnvFactory.getEnv()).checkClusterStatusWithoutUnknown();
// test count,
try (Connection connection = EnvFactory.getEnv().getConnection();
diff --git
a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
index 5062f6e9ee9..d558538ce81 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
@@ -631,12 +631,12 @@ public class TestUtils {
}
}
- public static boolean restartCluster(BaseEnv env) {
+ public static void restartCluster(BaseEnv env) {
env.shutdownAllDataNodes();
env.shutdownAllConfigNodes();
env.startAllConfigNodes();
env.startAllDataNodes();
- return ((AbstractEnv) env).checkClusterStatusWithoutUnknown();
+ ((AbstractEnv) env).checkClusterStatusWithoutUnknown();
}
public static void assertDataOnEnv(
diff --git
a/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeClusterIT.java
b/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeClusterIT.java
index b0b58ce56d9..827d61fa04d 100644
---
a/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeClusterIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeClusterIT.java
@@ -237,7 +237,7 @@ public class IoTDBPipeClusterIT extends AbstractPipeDualIT {
}
try {
senderEnv.startDataNode(i);
- Assert.assertTrue(((AbstractEnv)
senderEnv).checkClusterStatusWithoutUnknown());
+ ((AbstractEnv) senderEnv).checkClusterStatusWithoutUnknown();
} catch (Exception e) {
e.printStackTrace();
return;
@@ -261,8 +261,8 @@ public class IoTDBPipeClusterIT extends AbstractPipeDualIT {
"count(root.db.d1.s1),",
Collections.singleton("2,"));
}
- Assert.assertTrue(TestUtils.restartCluster(senderEnv));
- Assert.assertTrue(TestUtils.restartCluster(receiverEnv));
+ TestUtils.restartCluster(senderEnv);
+ TestUtils.restartCluster(receiverEnv);
try (SyncConfigNodeIServiceClient client =
(SyncConfigNodeIServiceClient)
senderEnv.getLeaderConfigNodeConnection()) {
@@ -357,8 +357,8 @@ public class IoTDBPipeClusterIT extends AbstractPipeDualIT {
Collections.singleton("2,"));
}
- Assert.assertTrue(TestUtils.restartCluster(senderEnv));
- Assert.assertTrue(TestUtils.restartCluster(receiverEnv));
+ TestUtils.restartCluster(senderEnv);
+ TestUtils.restartCluster(receiverEnv);
try (SyncConfigNodeIServiceClient client =
(SyncConfigNodeIServiceClient)
senderEnv.getLeaderConfigNodeConnection()) {
@@ -626,7 +626,7 @@ public class IoTDBPipeClusterIT extends AbstractPipeDualIT {
senderEnv.startDataNode(senderEnv.getDataNodeWrapperList().size() - 1);
senderEnv.shutdownDataNode(senderEnv.getDataNodeWrapperList().size() -
1);
senderEnv.getDataNodeWrapperList().remove(senderEnv.getDataNodeWrapperList().size()
- 1);
- Assert.assertTrue(((AbstractEnv)
senderEnv).checkClusterStatusWithoutUnknown());
+ ((AbstractEnv) senderEnv).checkClusterStatusWithoutUnknown();
} catch (Exception e) {
e.printStackTrace();
return;
@@ -684,7 +684,7 @@ public class IoTDBPipeClusterIT extends AbstractPipeDualIT {
return;
}
- Assert.assertTrue(TestUtils.restartCluster(senderEnv));
+ TestUtils.restartCluster(senderEnv);
TestUtils.assertDataOnEnv(
receiverEnv,
"select count(*) from root.**",
diff --git
a/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeLifeCycleIT.java
b/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeLifeCycleIT.java
index 473b9ea8086..ac8a4b335ca 100644
---
a/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeLifeCycleIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/pipe/it/IoTDBPipeLifeCycleIT.java
@@ -427,8 +427,8 @@ public class IoTDBPipeLifeCycleIT extends
AbstractPipeDualIT {
receiverEnv, "select * from root.**", "Time,root.db.d1.s1,",
expectedResSet);
}
- Assert.assertTrue(TestUtils.restartCluster(senderEnv));
- Assert.assertTrue(TestUtils.restartCluster(receiverEnv));
+ TestUtils.restartCluster(senderEnv);
+ TestUtils.restartCluster(receiverEnv);
try (SyncConfigNodeIServiceClient ignored =
(SyncConfigNodeIServiceClient)
senderEnv.getLeaderConfigNodeConnection()) {
@@ -491,7 +491,7 @@ public class IoTDBPipeLifeCycleIT extends
AbstractPipeDualIT {
});
t.start();
- Assert.assertTrue(TestUtils.restartCluster(receiverEnv));
+ TestUtils.restartCluster(receiverEnv);
t.join();
TestUtils.assertDataOnEnv(
@@ -664,8 +664,8 @@ public class IoTDBPipeLifeCycleIT extends
AbstractPipeDualIT {
TestUtils.assertDataOnEnv(
receiverEnv, "select * from root.**", "Time,root.db.d1.s1,",
expectedResSet);
- Assert.assertTrue(TestUtils.restartCluster(senderEnv));
- Assert.assertTrue(TestUtils.restartCluster(receiverEnv));
+ TestUtils.restartCluster(senderEnv);
+ TestUtils.restartCluster(receiverEnv);
for (int i = 400; i < 500; ++i) {
if (!TestUtils.tryExecuteNonQueryWithRetry(