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 <[email protected]> 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); } /**
