You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by lt...@apache.org on 2019/06/24 12:46:36 UTC

[incubator-iotdb] branch feature_async_close_tsfile updated: fix thread visible bug

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

lta pushed a commit to branch feature_async_close_tsfile
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/feature_async_close_tsfile by this push:
     new 69a113c  fix thread visible bug
69a113c is described below

commit 69a113cb99ffd9e2d165b4511e0823a64cb8f1de
Author: lta <li...@163.com>
AuthorDate: Mon Jun 24 20:46:24 2019 +0800

    fix thread visible bug
---
 .../java/org/apache/iotdb/db/engine/filenodeV2/FlushManager.java   | 7 ++-----
 .../org/apache/iotdb/db/engine/memtable/MemTableFlushTaskV2.java   | 4 ++--
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FlushManager.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FlushManager.java
index 1c9adbe..b971b75 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FlushManager.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FlushManager.java
@@ -39,6 +39,7 @@ public class FlushManager {
     @Override
     public void run() {
       UnsealedTsFileProcessorV2 unsealedTsFileProcessor = unsealedTsFileProcessorQueue.poll();
+      long startTime = System.currentTimeMillis();
       try {
         unsealedTsFileProcessor.flushOneMemTable();
       } catch (IOException e) {
@@ -46,6 +47,7 @@ public class FlushManager {
         // TODO do sth
       }
       unsealedTsFileProcessor.setManagedByFlushManager(false);
+      LOGGER.info("flush process consume {} ms", System.currentTimeMillis() - startTime);
       registerUnsealedTsFileProcessor(unsealedTsFileProcessor);
     }
   }
@@ -57,11 +59,6 @@ public class FlushManager {
     synchronized (unsealedTsFileProcessor) {
       if (!unsealedTsFileProcessor.isManagedByFlushManager() && unsealedTsFileProcessor.getFlushingMemTableSize() > 0) {
         LOGGER.info("begin to submit a flush thread, flushing memtable size: {}", unsealedTsFileProcessor.getFlushingMemTableSize());
-        try {
-          Thread.sleep(100);
-        } catch (InterruptedException e) {
-          e.printStackTrace();
-        }
         unsealedTsFileProcessorQueue.add(unsealedTsFileProcessor);
         unsealedTsFileProcessor.setManagedByFlushManager(true);
         return flushPool.submit(new FlushThread());
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskV2.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskV2.java
index 13c45a5..29e6ed3 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskV2.java
@@ -40,7 +40,7 @@ public class MemTableFlushTaskV2 {
 
   private ConcurrentLinkedQueue ioTaskQueue = new ConcurrentLinkedQueue();
   private ConcurrentLinkedQueue memoryTaskQueue = new ConcurrentLinkedQueue();
-  private boolean stop = false;
+  private volatile boolean stop = false;
   private String storageGroup;
 
   private Consumer<IMemTable> flushCallBack;
@@ -219,7 +219,7 @@ public class MemTableFlushTaskV2 {
     int seriesNumber;
     String deviceId;
     long version;
-    boolean finished;
+    volatile boolean finished;
 
     public ChunkGroupIoTask(int seriesNumber, String deviceId, long version) {
       this(seriesNumber, deviceId, version, false);