You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2020/02/24 14:59:49 UTC

[incubator-iotdb] branch FileClosedDebug updated: add close reason log

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

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


The following commit(s) were added to refs/heads/FileClosedDebug by this push:
     new ffc64df  add close reason log
ffc64df is described below

commit ffc64df3a220a9291fe83c8f833390efa05ca629
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Mon Feb 24 22:59:34 2020 +0800

    add close reason log
---
 .../iotdb/db/query/control/FileReaderManager.java  |  6 ++--
 .../iotdb/tsfile/read/TsFileSequenceReader.java    | 33 ++++++++++++----------
 .../tsfile/read/reader/DefaultTsFileInput.java     |  2 +-
 3 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java b/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java
index 5d37fc8..87a90a3 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/control/FileReaderManager.java
@@ -93,12 +93,12 @@ public class FileReaderManager implements IService {
     closedReferenceMap.remove(seqFile);
     TsFileSequenceReader reader = closedFileReaderMap.remove(seqFile);
     if (reader != null) {
-      reader.close();
+      reader.close("Merge");
     }
     unclosedReferenceMap.remove(seqFile);
     reader = unclosedFileReaderMap.remove(seqFile);
     if (reader != null) {
-      reader.close();
+      reader.close("Merge");
     }
   }
 
@@ -124,7 +124,7 @@ public class FileReaderManager implements IService {
 
       if (refAtom != null && refAtom.get() == 0) {
         try {
-          reader.close();
+          reader.close("no reference");
         } catch (IOException e) {
           logger.error("Can not close TsFileSequenceReader {} !", reader.getFileName(), e);
         }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
index b8cd41d..3c1f0b4 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
@@ -18,16 +18,6 @@
  */
 package org.apache.iotdb.tsfile.read;
 
-import static org.apache.iotdb.tsfile.write.writer.TsFileIOWriter.magicStringBytes;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.compress.IUnCompressor;
@@ -37,11 +27,7 @@ import org.apache.iotdb.tsfile.file.MetaMarker;
 import org.apache.iotdb.tsfile.file.footer.ChunkGroupFooter;
 import org.apache.iotdb.tsfile.file.header.ChunkHeader;
 import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetaData;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData;
-import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadataIndex;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetaData;
+import org.apache.iotdb.tsfile.file.metadata.*;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
@@ -54,6 +40,17 @@ import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.apache.iotdb.tsfile.write.writer.TsFileIOWriter.magicStringBytes;
+
 public class TsFileSequenceReader implements AutoCloseable {
 
   private static final Logger logger = LoggerFactory.getLogger(TsFileSequenceReader.class);
@@ -474,6 +471,12 @@ public class TsFileSequenceReader implements AutoCloseable {
     deviceMetadataMap = null;
   }
 
+  public void close(String reason) throws IOException {
+    resourceLogger.debug("{} reader is closed by {}", file, reason);
+    this.tsFileInput.close();
+    deviceMetadataMap = null;
+  }
+
   public String getFileName() {
     return this.file;
   }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/DefaultTsFileInput.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/DefaultTsFileInput.java
index ca04d2f..57a678e 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/DefaultTsFileInput.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/DefaultTsFileInput.java
@@ -70,7 +70,7 @@ public class DefaultTsFileInput implements TsFileInput {
     try {
       return channel.read(dst, position);
     } catch (ClosedChannelException e) {
-      LOGGER.error(String.format("File is closed while reading %s", path));
+      LOGGER.error("File is closed while reading {}", path);
       throw e;
     }
   }