You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2020/02/11 13:38:03 UTC

[incubator-iotdb] branch master updated: [IOTDB-470]fix IllegalArgumentException when there exists 0 byte TsFile (#784)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1013014  [IOTDB-470]fix IllegalArgumentException when there exists 0 byte TsFile (#784)
1013014 is described below

commit 1013014af6d43169a9c2127ecd0b509ba83ad097
Author: gwmh <16...@qq.com>
AuthorDate: Tue Feb 11 21:37:52 2020 +0800

    [IOTDB-470]fix IllegalArgumentException when there exists 0 byte TsFile (#784)
    
    * fix IllegalArgumentException when there exists 0 byte TsFile
---
 .../iotdb/db/engine/storagegroup/StorageGroupProcessor.java       | 8 ++++++++
 server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java  | 6 +++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 4a6037b..4b6bed8 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -265,9 +265,17 @@ public class StorageGroupProcessor {
       recoverUnseqFiles(unseqTsFiles);
 
       for (TsFileResource resource : seqTsFiles) {
+        //After recover, case the TsFile's length is equal to 0, delete both the TsFileResource and the file itself
+        if (resource.getFile().length() == 0) {
+          deleteTsfile(resource.getFile());
+        }
         allDirectFileVersions.addAll(resource.getHistoricalVersions());
       }
       for (TsFileResource resource : unseqTsFiles) {
+        //After recover, case the TsFile's length is equal to 0, delete both the TsFileResource and the file itself
+        if (resource.getFile().length() == 0) {
+          deleteTsfile(resource.getFile());
+        }
         allDirectFileVersions.addAll(resource.getHistoricalVersions());
       }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java
index 017f203..62826ac 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java
@@ -58,12 +58,16 @@ public class UpgradeUtils {
    */
   public static boolean isNeedUpgrade(TsFileResource tsFileResource) {
     tsFileResource.getWriteQueryLock().readLock().lock();
+    //case the TsFile's length is equal to 0, the TsFile does not need to be upgraded
+    if (tsFileResource.getFile().length() == 0) {
+      return false;
+    }
     try (TsFileSequenceReader tsFileSequenceReader = new TsFileSequenceReader(
         tsFileResource.getFile().getAbsolutePath())) {
       if (tsFileSequenceReader.readVersionNumber().equals(TSFileConfig.OLD_VERSION)) {
         return true;
       }
-    } catch (IOException e) {
+    } catch (Exception e) {
       logger.error("meet error when judge whether file needs to be upgraded, the file's path:{}",
           tsFileResource.getFile().getAbsolutePath(), e);
     } finally {