You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/08/06 03:40:47 UTC
[iotdb] 01/04: Fix upgrade tool cannot close file reader (#3319)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch cp_upgrade_commit
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit a8ac5df6faf09ff326d4791b832539943280fdd7
Author: Haonan <hh...@outlook.com>
AuthorDate: Thu Jun 3 16:52:12 2021 +0800
Fix upgrade tool cannot close file reader (#3319)
---
.../org/apache/iotdb/db/tools/TsFileRewriteTool.java | 18 ++++++++++++++++++
.../db/tools/upgrade/TsFileOnlineUpgradeTool.java | 4 +---
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java
index b356dd3..a1c1a2d 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java
@@ -41,6 +41,7 @@ import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.BatchData;
import org.apache.iotdb.tsfile.read.reader.page.PageReader;
import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.iotdb.tsfile.v2.read.TsFileSequenceReaderForV2;
import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
@@ -107,6 +108,23 @@ public class TsFileRewriteTool implements AutoCloseable {
}
}
+ public TsFileRewriteTool(TsFileResource resourceToBeRewritten, boolean needReaderForV2)
+ throws IOException {
+ oldTsFile = resourceToBeRewritten.getTsFile();
+ String file = oldTsFile.getAbsolutePath();
+ if (needReaderForV2) {
+ reader = new TsFileSequenceReaderForV2(file);
+ } else {
+ reader = new TsFileSequenceReader(file);
+ }
+ partitionWriterMap = new HashMap<>();
+ if (FSFactoryProducer.getFSFactory().getFile(file + ModificationFile.FILE_SUFFIX).exists()) {
+ oldModification = (List<Modification>) resourceToBeRewritten.getModFile().getModifications();
+ modsIterator = oldModification.iterator();
+ fileModificationMap = new HashMap<>();
+ }
+ }
+
/**
* Rewrite an old file to the latest version
*
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java b/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java
index 6d0192c..8b04bba 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java
@@ -62,9 +62,7 @@ public class TsFileOnlineUpgradeTool extends TsFileRewriteTool {
* @throws IOException If some I/O error occurs
*/
public TsFileOnlineUpgradeTool(TsFileResource resourceToBeUpgraded) throws IOException {
- super(resourceToBeUpgraded);
- String file = oldTsFile.getAbsolutePath();
- reader = new TsFileSequenceReaderForV2(file);
+ super(resourceToBeUpgraded, true);
}
/**