You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2023/04/21 04:01:14 UTC

[iotdb] branch ISSUE_5792 updated: fix task initialization

This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch ISSUE_5792
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/ISSUE_5792 by this push:
     new 4e25ecd2be fix task initialization
4e25ecd2be is described below

commit 4e25ecd2bef76e89c5d57e75652a9acf486f187c
Author: Tian Jiang <jt...@163.com>
AuthorDate: Fri Apr 21 12:03:40 2023 +0800

    fix task initialization
---
 .../commons/concurrent/dynamic/DynamicThreadGroup.java   |  4 +++-
 .../iotdb/db/engine/flush/MemTableFlushTaskV2.java       | 16 ++++++++++------
 .../apache/iotdb/db/engine/flush/tasks/DeviceIOTask.java |  4 ++--
 .../apache/iotdb/db/engine/flush/tasks/FinalTask.java    |  4 +---
 .../iotdb/db/engine/flush/tasks/SortSeriesTask.java      |  4 +---
 5 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThreadGroup.java b/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThreadGroup.java
index 240917d076..bbbd62a7e4 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThreadGroup.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThreadGroup.java
@@ -18,12 +18,12 @@
  */
 package org.apache.iotdb.commons.concurrent.dynamic;
 
-import java.util.concurrent.ExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
@@ -51,7 +51,9 @@ public class DynamicThreadGroup {
     this.threadFactory = threadFactory;
     this.minThreadCnt = Math.max(1, minThreadCnt);
     this.maxThreadCnt = Math.max(this.minThreadCnt, maxThreadCnt);
+  }
 
+  public void init() {
     int initialThreadNum = (this.minThreadCnt + this.maxThreadCnt) / 2;
     for (int i = 0; i < initialThreadNum; i++) {
       addThread();
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTaskV2.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTaskV2.java
index 6a4b95eaa6..2d56412e0f 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTaskV2.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTaskV2.java
@@ -115,12 +115,16 @@ public class MemTableFlushTaskV2 {
             this::newEncodingThread,
             config.getFlushMemTableMinSubThread(),
             config.getFlushMemTableMaxSubThread());
-    this.ioTask = new DynamicThreadGroup(
-        storageGroup + "-" + dataRegionId + "-" + memTable,
-        SUB_TASK_POOL_MANAGER::submit,
-        this::newIOThread,
-        1,
-        1);
+    this.ioTask =
+        new DynamicThreadGroup(
+            storageGroup + "-" + dataRegionId + "-" + memTable,
+            SUB_TASK_POOL_MANAGER::submit,
+            this::newIOThread,
+            1,
+            1);
+    this.sortTasks.init();
+    this.encodingTasks.init();
+    this.ioTask.init();
     LOGGER.debug(
         "flush task of database {} memtable is created, flushing to file {}.",
         storageGroup,
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/DeviceIOTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/DeviceIOTask.java
index cc3c9ba3c6..7267af2a3d 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/DeviceIOTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/DeviceIOTask.java
@@ -29,8 +29,8 @@ import java.io.IOException;
  * A DeviceIOTask will check if the current device in the FlushContext (indicated by
  * FlushContext.cursor) is fully encoded. If it is fully encoded, it will be flushed to the
  * underlying file and the cursor will be moved to the next device.
- * <p>
- * The above procedure repeats until the current device is still being encoded or all devices are
+ *
+ * <p>The above procedure repeats until the current device is still being encoded or all devices are
  * flushed. If all devices are flushed, a FinalTask will be generated. Otherwise, no new task will
  * be generated.
  */
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/FinalTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/FinalTask.java
index 632f9b4ef3..de5d74d3ca 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/FinalTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/FinalTask.java
@@ -20,9 +20,7 @@ package org.apache.iotdb.db.engine.flush.tasks;
 
 import org.apache.iotdb.commons.concurrent.pipeline.Task;
 
-/**
- * FinalTask ends the current TaskRunner by interruption.
- */
+/** FinalTask ends the current TaskRunner by interruption. */
 public class FinalTask implements Task {
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/SortSeriesTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/SortSeriesTask.java
index a5c529f6ed..055e6f56d7 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/SortSeriesTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/tasks/SortSeriesTask.java
@@ -23,9 +23,7 @@ import org.apache.iotdb.db.engine.memtable.IWritableMemChunk;
 import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID;
 import org.apache.iotdb.db.service.metrics.WritingMetrics;
 
-/**
- * SortSeriesTask sorts a timeseries and generates the associated encoding task.
- */
+/** SortSeriesTask sorts a timeseries and generates the associated encoding task. */
 public class SortSeriesTask implements Task {
   private IDeviceID deviceId;
   private String seriesId;