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/12/11 05:55:37 UTC

[incubator-iotdb] branch fix_compression_ratio_dead_lock_bug created (now 7a33a79)

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

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


      at 7a33a79  fix bug of dead lock in compression ratio

This branch includes the following new commits:

     new 7a33a79  fix bug of dead lock in compression ratio

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-iotdb] 01/01: fix bug of dead lock in compression ratio

Posted by lt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7a33a79e74c36a0285e9d65303ada350abf9f45a
Author: lta <li...@163.com>
AuthorDate: Wed Dec 11 13:55:15 2019 +0800

    fix bug of dead lock in compression ratio
---
 .../org/apache/iotdb/db/conf/adapter/CompressionRatio.java   | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java b/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
index 3b5ae62..dd086da 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.db.conf.adapter;
 
+import com.google.common.util.concurrent.AtomicDouble;
 import java.io.File;
 import java.io.IOException;
 import java.util.Locale;
@@ -55,6 +56,8 @@ public class CompressionRatio {
 
   private static final double DEFAULT_COMPRESSION_RATIO = 2.0;
 
+  private AtomicDouble compressionRatio = new AtomicDouble(DEFAULT_COMPRESSION_RATIO);
+
   /**
    * The total sum of all compression ratios.
    */
@@ -87,8 +90,9 @@ public class CompressionRatio {
     File newFile = SystemFileFactory.INSTANCE.getFile(directory,
         String.format(Locale.ENGLISH, RATIO_FILE_PATH_FORMAT, compressionRatioSum, calcTimes));
     persist(oldFile, newFile);
+    compressionRatio.set(compressionRatioSum / calcTimes);
     if (LOGGER.isInfoEnabled()) {
-      LOGGER.info("Compression ratio is {}", getRatio());
+      LOGGER.info("Compression ratio is {}", compressionRatio.get());
     }
     if (CONFIG.isEnableParameterAdapter()) {
       if (LOGGER.isInfoEnabled()) {
@@ -112,8 +116,8 @@ public class CompressionRatio {
   /**
    * Get the average compression ratio for all closed files
    */
-  public synchronized double getRatio() {
-    return calcTimes == 0 ? DEFAULT_COMPRESSION_RATIO : compressionRatioSum / calcTimes;
+  public double getRatio() {
+    return compressionRatio.get();
   }
 
   private void persist(File oldFile, File newFile) throws IOException {
@@ -158,6 +162,7 @@ public class CompressionRatio {
       }
       calcTimes = maxTimes;
       compressionRatioSum = maxCompressionRatioSum;
+      compressionRatio.set(compressionRatioSum / calcTimes);
       LOGGER.debug(
           "After restoring from compression ratio file, compressionRatioSum = {}, calcTimes = {}",
           compressionRatioSum, calcTimes);
@@ -199,3 +204,4 @@ public class CompressionRatio {
 
   }
 }
+