You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by yu...@apache.org on 2020/07/29 15:38:59 UTC

[incubator-iotdb] branch kyy updated: force flush

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

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


The following commit(s) were added to refs/heads/kyy by this push:
     new 90a350e  force flush
90a350e is described below

commit 90a350e20f8d94190c3387e0c3d691ff2bf60480
Author: Ring-k <yu...@hotmail.com>
AuthorDate: Wed Jul 29 23:38:21 2020 +0800

    force flush
---
 .../java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java | 2 +-
 .../cluster/log/manage/serializable/SyncLogDequeSerializer.java  | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java
index 748a261..8328c16 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/RaftLogManager.java
@@ -600,7 +600,7 @@ abstract public class RaftLogManager {
 
   public void flushLogPeriodically() {
     synchronized (this) {
-      getStableEntryManager().flushLogBuffer();
+      getStableEntryManager().forceFlushLogBuffer();
     }
   }
 
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/serializable/SyncLogDequeSerializer.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/serializable/SyncLogDequeSerializer.java
index 61306b6..b5847d8 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/serializable/SyncLogDequeSerializer.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/serializable/SyncLogDequeSerializer.java
@@ -218,18 +218,19 @@ public class SyncLogDequeSerializer implements StableEntryManager {
 
   @Override
   public void flushLogBuffer() {
-
     lock.writeLock().lock();
     try {
       if (bufferedLogNum == 0) {
         return;
       }
       // write into disk
-      System.out.println(">>>>>>>>>>>>>>>>>>> flush log");
       try {
         checkStream();
         ReadWriteIOUtils
             .writeWithoutSize(logBuffer, 0, logBuffer.position(), currentLogOutputStream);
+        if(ClusterDescriptor.getInstance().getConfig().getForceRaftLogPeriodInMS() == 0){
+          currentLogOutputStream.getChannel().force(true);
+        }
       } catch (IOException e) {
         logger.error("Error in logs serialization: ", e);
         return;
@@ -247,7 +248,9 @@ public class SyncLogDequeSerializer implements StableEntryManager {
     flushLogBuffer();
     lock.writeLock().lock();
     try {
-      currentLogOutputStream.getChannel().force(true);
+      if (currentLogOutputStream != null) {
+        currentLogOutputStream.getChannel().force(true);
+      }
     } catch (IOException e) {
       logger.error("Error when force flushing logs serialization: ", e);
       return;