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;
     }