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

marklau99 pushed a commit to branch IOTDB-4518
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit cc634c6a742db537b927e3f70b997139f3a4e89b
Author: Liu Xuxin <[email protected]>
AuthorDate: Fri Sep 23 18:12:52 2022 +0800

    fix not delete CMT file
---
 .../iotdb/tsfile/write/writer/TsFileIOWriter.java  |  9 ++++-
 .../writer/TsFileIOWriterMemoryControlTest.java    | 42 ++++++++++++++++++++++
 2 files changed, 50 insertions(+), 1 deletion(-)

diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
index 851f03c192..6cf00f8b84 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
@@ -45,6 +45,7 @@ import org.apache.iotdb.tsfile.utils.PublicBAOS;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 import org.apache.iotdb.tsfile.write.writer.tsmiterator.TSMIterator;
 
+import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -116,7 +117,7 @@ public class TsFileIOWriter implements AutoCloseable {
   protected boolean enableMemoryControl = false;
   private Path lastSerializePath = null;
   protected LinkedList<Long> endPosInCMTForDevice = new LinkedList<>();
-  public static final String CHUNK_METADATA_TEMP_FILE_SUFFIX = ".cmt";
+  public static final String CHUNK_METADATA_TEMP_FILE_SUFFIX = ".meta";
 
   /** empty construct function. */
   protected TsFileIOWriter() {}
@@ -313,6 +314,12 @@ public class TsFileIOWriter implements AutoCloseable {
     if (resourceLogger.isDebugEnabled() && file != null) {
       resourceLogger.debug("{} writer is closed.", file.getName());
     }
+    if (file != null) {
+      File chunkMetadataFile = new File(file.getAbsolutePath() + 
CHUNK_METADATA_TEMP_FILE_SUFFIX);
+      if (chunkMetadataFile.exists()) {
+        FileUtils.delete(chunkMetadataFile);
+      }
+    }
     canWrite = false;
   }
 
diff --git 
a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
 
b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
index 44e4af3678..b7c6ff84db 100644
--- 
a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
+++ 
b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
@@ -293,6 +293,9 @@ public class TsFileIOWriterMemoryControlTest {
       Assert.assertTrue(writer.hasChunkMetadataInDisk);
       writer.endFile();
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -377,6 +380,9 @@ public class TsFileIOWriterMemoryControlTest {
       Assert.assertTrue(writer.hasChunkMetadataInDisk);
       writer.endFile();
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -464,6 +470,9 @@ public class TsFileIOWriterMemoryControlTest {
       Assert.assertFalse(writer.chunkGroupMetadataList.isEmpty());
       writer.endFile();
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -552,6 +561,9 @@ public class TsFileIOWriterMemoryControlTest {
     } finally {
       TEST_CHUNK_SIZE = originTestChunkSize;
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -640,6 +652,9 @@ public class TsFileIOWriterMemoryControlTest {
     } finally {
       TEST_CHUNK_SIZE = originTestChunkSize;
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originTimes);
   }
@@ -728,6 +743,9 @@ public class TsFileIOWriterMemoryControlTest {
     } finally {
       TEST_CHUNK_SIZE = originTestChunkSize;
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originTimes);
   }
@@ -762,6 +780,9 @@ public class TsFileIOWriterMemoryControlTest {
       writer.endFile();
       Assert.assertTrue(writer.hasChunkMetadataInDisk);
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -798,6 +819,9 @@ public class TsFileIOWriterMemoryControlTest {
       writer.endFile();
       Assert.assertTrue(writer.hasChunkMetadataInDisk);
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -840,6 +864,9 @@ public class TsFileIOWriterMemoryControlTest {
     } finally {
       TEST_CHUNK_SIZE = originTestPointNum;
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -878,6 +905,9 @@ public class TsFileIOWriterMemoryControlTest {
     } finally {
       TEST_CHUNK_SIZE = originTestPointNum;
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -934,6 +964,9 @@ public class TsFileIOWriterMemoryControlTest {
       }
       writer.endFile();
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originValue);
   }
@@ -1030,6 +1063,9 @@ public class TsFileIOWriterMemoryControlTest {
       writer.endFile();
       Assert.assertTrue(writer.hasChunkMetadataInDisk);
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originData);
   }
@@ -1081,6 +1117,9 @@ public class TsFileIOWriterMemoryControlTest {
       }
       writer.endFile();
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originValue);
   }
@@ -1136,6 +1175,9 @@ public class TsFileIOWriterMemoryControlTest {
       }
       writer.endFile();
     }
+    Assert.assertFalse(
+        new File(testFile.getAbsolutePath() + 
TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
+            .exists());
     
TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
     TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), 
originValue);
   }

Reply via email to