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 2020/04/21 09:25:05 UTC
[incubator-iotdb] 01/01: upgrade mlog
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch upgrade_mlog
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit cebc4f01e1e33e4a2fe965c6a0a8b09f23f799cc
Author: HTHou <hh...@outlook.com>
AuthorDate: Tue Apr 21 17:24:17 2020 +0800
upgrade mlog
---
.../org/apache/iotdb/db/conf/IoTDBConfigCheck.java | 17 ++++++++++++
.../org/apache/iotdb/db/metadata/MLogWriter.java | 31 ++++++++++++++++++++++
2 files changed, 48 insertions(+)
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
index ec14db3..cd48988 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
@@ -19,6 +19,8 @@
package org.apache.iotdb.db.conf;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
+import org.apache.iotdb.db.metadata.MLogWriter;
+import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +41,7 @@ public class IoTDBConfigCheck {
private static String timestampPrecision = "ms";
private static long partitionInterval = 86400;
private static String tsfileFileSystem = "LOCAL";
+ private static String iotdbVersion = "0.10.0";
private Properties properties = new Properties();
public static final IoTDBConfigCheck getInstance() {
@@ -93,6 +96,7 @@ public class IoTDBConfigCheck {
properties.setProperty("timestamp_precision", timestampPrecision);
properties.setProperty("storage_group_time_range", String.valueOf(partitionInterval));
properties.setProperty("tsfile_storage_fs", tsfileFileSystem);
+ properties.setProperty("iotdb_version", iotdbVersion);
properties.store(outputStream, "System properties:");
}
}
@@ -120,6 +124,19 @@ public class IoTDBConfigCheck {
.getProperty("tsfile_storage_fs") + " !");
System.exit(-1);
}
+ if (properties.getProperty("iotdb_version") == null) {
+ logger.warn("Lower iotdb version detected, upgrading old mlog file... ");
+ MLogWriter.upgradeMLog(IoTDBDescriptor.getInstance().getConfig().getSchemaDir(),
+ MetadataConstant.METADATA_LOG);
+ logger.info("Old mlog file is upgraded.");
+ try (FileOutputStream outputStream = new FileOutputStream(file.toString())) {
+ properties.setProperty("timestamp_precision", timestampPrecision);
+ properties.setProperty("storage_group_time_range", String.valueOf(partitionInterval));
+ properties.setProperty("tsfile_storage_fs", tsfileFileSystem);
+ properties.setProperty("iotdb_version", iotdbVersion);
+ properties.store(outputStream, "System properties:");
+ }
+ }
} catch (IOException e) {
logger.error("Load system.properties from {} failed.", file.getAbsolutePath(), e);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MLogWriter.java b/server/src/main/java/org/apache/iotdb/db/metadata/MLogWriter.java
index 4067a3d..dc2da5a 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MLogWriter.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MLogWriter.java
@@ -23,8 +23,10 @@ import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
@@ -113,4 +115,33 @@ public class MLogWriter {
writer.newLine();
writer.flush();
}
+
+ public static File upgradeMLog(String schemaDir, String logFileName) throws IOException {
+ File logFile = SystemFileFactory.INSTANCE.getFile(schemaDir + File.separator + logFileName);
+ FileReader fileReader;
+ String line;
+ fileReader = new FileReader(logFile);
+ BufferedReader reader = new BufferedReader(fileReader);
+ StringBuffer bufAll = new StringBuffer();
+ while ((line = reader.readLine()) != null) {
+ StringBuffer buf = new StringBuffer();
+ if (line.startsWith(MetadataOperationType.CREATE_TIMESERIES)) {
+ line = line + ",,,,";
+ }
+ buf.append(line);
+ buf.append(System.getProperty("line.separator"));
+ bufAll.append(buf);
+ }
+ reader.close();
+ logFile.delete();
+ File newFile = new File(logFile.getAbsolutePath());
+ FileWriter fileWriter;
+ fileWriter = new FileWriter(newFile, true);
+ BufferedWriter writer = new BufferedWriter(fileWriter);
+ writer.write(bufAll.toString());
+ writer.flush();
+ writer.close();
+ return newFile;
+ }
+
}