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 2020/01/14 05:29:08 UTC
[incubator-iotdb] branch master updated: avoid encoding task dying
silently (#737)
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/incubator-iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 7c0f1d5 avoid encoding task dying silently (#737)
7c0f1d5 is described below
commit 7c0f1d5efc57c5ef780cc86dd2750a9fa7b45914
Author: Jiang Tian <jt...@163.com>
AuthorDate: Tue Jan 14 13:29:01 2020 +0800
avoid encoding task dying silently (#737)
---
.../org/apache/iotdb/db/engine/flush/MemTableFlushTask.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
index 9c20ab5..09d63c2 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
@@ -43,6 +43,7 @@ public class MemTableFlushTask {
private static final Logger logger = LoggerFactory.getLogger(MemTableFlushTask.class);
private static final FlushSubTaskPoolManager subTaskPoolManager = FlushSubTaskPoolManager
.getInstance();
+ private Future encodingTaskFuture;
private Future ioTaskFuture;
private RestorableTsFileIOWriter writer;
@@ -61,7 +62,7 @@ public class MemTableFlushTask {
this.schema = schema;
this.writer = writer;
this.storageGroup = storageGroup;
- subTaskPoolManager.submit(encodingTask);
+ this.encodingTaskFuture = subTaskPoolManager.submit(encodingTask);
this.ioTaskFuture = subTaskPoolManager.submit(ioTask);
logger.debug("flush task of Storage group {} memtable {} is created ",
storageGroup, memTable.getVersion());
@@ -94,6 +95,15 @@ public class MemTableFlushTask {
"Storage group {} memtable {}, flushing into disk: data sort time cost {} ms.",
storageGroup, memTable.getVersion(), sortTime);
+ try {
+ encodingTaskFuture.get();
+ } catch (InterruptedException | ExecutionException e) {
+ // avoid ioTask waiting forever
+ noMoreIOTask = true;
+ ioTaskFuture.cancel(true);
+ throw e;
+ }
+
ioTaskFuture.get();
logger.info(