You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/04/20 01:05:09 UTC
[iotdb] branch master updated: [IOTDB-2887][IOTDB-2930][IOTDB-2932] Fix recover test error in CI & Fix NPE while concurrent createTimeseries & Add config check for schema engine mode (#5601)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin 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 3bc4955429 [IOTDB-2887][IOTDB-2930][IOTDB-2932] Fix recover test error in CI & Fix NPE while concurrent createTimeseries & Add config check for schema engine mode (#5601)
3bc4955429 is described below
commit 3bc49554295d5767e0f004ba8a7a8fa3567f5ec1
Author: Marcos_Zyk <38...@users.noreply.github.com>
AuthorDate: Wed Apr 20 09:05:04 2022 +0800
[IOTDB-2887][IOTDB-2930][IOTDB-2932] Fix recover test error in CI & Fix NPE while concurrent createTimeseries & Add config check for schema engine mode (#5601)
* fix concurrent npe of LocalSchemaPartitionTable
* implement IoTDBConfigCheck for schema engine mode
* fix recover test bug
---
.../src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java | 8 ++++++++
.../main/java/org/apache/iotdb/db/metadata/LocalConfigNode.java | 2 +-
.../org/apache/iotdb/db/metadata/LocalSchemaPartitionTable.java | 6 ++++++
.../iotdb/db/metadata/mtree/store/disk/MTreeFlushTaskManager.java | 2 +-
.../db/metadata/mtree/store/disk/MTreeReleaseTaskManager.java | 2 +-
5 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
index 8f65fb3e3d..07034d28d3 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
@@ -99,6 +99,9 @@ public class IoTDBConfigCheck {
private static final String ENABLE_ID_TABLE_LOG_FILE = "enable_id_table_log_file";
private static String enableIdTableLogFile = String.valueOf(config.isEnableIDTableLogFile());
+ private static final String SCHEMA_ENGINE_MODE = "schema_engine_mode";
+ private static String schemaEngineMode = String.valueOf(config.getSchemaEngineMode());
+
private static final String TIME_ENCODER_KEY = "time_encoder";
private static String timeEncoderValue =
String.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
@@ -161,6 +164,7 @@ public class IoTDBConfigCheck {
systemProperties.put(TIME_ENCODER_KEY, timeEncoderValue);
systemProperties.put(ENABLE_ID_TABLE, enableIDTable);
systemProperties.put(ENABLE_ID_TABLE_LOG_FILE, enableIdTableLogFile);
+ systemProperties.put(SCHEMA_ENGINE_MODE, schemaEngineMode);
}
/**
@@ -370,6 +374,10 @@ public class IoTDBConfigCheck {
if (!(properties.getProperty(ENABLE_ID_TABLE_LOG_FILE).equals(enableIdTableLogFile))) {
throwException(ENABLE_ID_TABLE_LOG_FILE, enableIdTableLogFile);
}
+
+ if (!(properties.getProperty(SCHEMA_ENGINE_MODE).equals(schemaEngineMode))) {
+ throwException(SCHEMA_ENGINE_MODE, schemaEngineMode);
+ }
}
private void throwException(String parameter, Object badValue) throws ConfigurationException {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/LocalConfigNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/LocalConfigNode.java
index 4e795d9535..2b2f20433a 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/LocalConfigNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/LocalConfigNode.java
@@ -181,7 +181,7 @@ public class LocalConfigNode {
SchemaResourceManager.clearSchemaResource();
if (timedForceMLogThread != null) {
- timedForceMLogThread.shutdownNow();
+ timedForceMLogThread.shutdown();
timedForceMLogThread = null;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/LocalSchemaPartitionTable.java b/server/src/main/java/org/apache/iotdb/db/metadata/LocalSchemaPartitionTable.java
index fa449334f8..f5d1adfd06 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/LocalSchemaPartitionTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/LocalSchemaPartitionTable.java
@@ -106,6 +106,9 @@ public class LocalSchemaPartitionTable {
}
public synchronized void setStorageGroup(PartialPath storageGroup) {
+ if (table.containsKey(storageGroup)) {
+ return;
+ }
table.put(storageGroup, Collections.synchronizedSet(new HashSet<>()));
}
@@ -116,6 +119,9 @@ public class LocalSchemaPartitionTable {
// This method may be extended to implement multi schemaRegion for one storageGroup
// todo keep consistent with the partition method of config node in new cluster
private SchemaRegionId calculateSchemaRegionId(PartialPath storageGroup, PartialPath path) {
+ if (!table.containsKey(storageGroup)) {
+ setStorageGroup(storageGroup);
+ }
return table.get(storageGroup).iterator().next();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeFlushTaskManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeFlushTaskManager.java
index e5597bb960..e10fa49d54 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeFlushTaskManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeFlushTaskManager.java
@@ -54,7 +54,7 @@ public class MTreeFlushTaskManager {
public void clear() {
if (flushTaskExecutor != null) {
- flushTaskExecutor.shutdownNow();
+ flushTaskExecutor.shutdown();
while (!flushTaskExecutor.isTerminated()) ;
flushTaskExecutor = null;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeReleaseTaskManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeReleaseTaskManager.java
index 2500fb25f6..bce67fc863 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeReleaseTaskManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/disk/MTreeReleaseTaskManager.java
@@ -53,7 +53,7 @@ public class MTreeReleaseTaskManager {
public void clear() {
if (releaseTaskExecutor != null) {
- releaseTaskExecutor.shutdownNow();
+ releaseTaskExecutor.shutdown();
while (!releaseTaskExecutor.isTerminated()) ;
releaseTaskExecutor = null;
}