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 {