diff --git a/client/src/assembly/resources/sbin/start-client.bat b/client/src/assembly/resources/sbin/start-client.bat index 2642dfd9860e13478468b72b713c8f99bb32bc15..ba0d673640c835342818ce50ccd1c8c2d2950ae9 100755 --- a/client/src/assembly/resources/sbin/start-client.bat +++ b/client/src/assembly/resources/sbin/start-client.bat @@ -37,16 +37,9 @@ set JAVA_OPTS=-ea^ -DIOTDB_CLI_HOME=%IOTDB_CLI_HOME% REM For each jar in the IOTDB_CLI_HOME lib directory call append to build the CLASSPATH variable. -for %%i in ("%IOTDB_CLI_HOME%\lib\*.jar") do call :append "%%i" -goto okClasspath - -:append -set CLASSPATH=%CLASSPATH%;%1 -goto :eof +set CLASSPATH=%IOTDB_CLI_HOME%\lib\* REM ----------------------------------------------------------------------------- -:okClasspath - set PARAMETERS=%* if "%PARAMETERS%" == "" set PARAMETERS=-h 127.0.0.1 -p 6667 -u root -pw root diff --git a/client/src/assembly/resources/tools/export-csv.bat b/client/src/assembly/resources/tools/export-csv.bat index f2432b8b6ce4d6c781be5bd2e2e0630528535145..2514bf6d725a5c6f560574f445cc346e1193bbc2 100644 --- a/client/src/assembly/resources/tools/export-csv.bat +++ b/client/src/assembly/resources/tools/export-csv.bat @@ -37,19 +37,9 @@ set JAVA_OPTS=-ea^ -DIOTDB_CLI_HOME=%IOTDB_CLI_HOME% @REM ***** CLASSPATH library setting ***** -@REM Ensure that any user defined CLASSPATH variables are not used on startup -set CLASSPATH="" - -REM For each jar in the IOTDB_CLI_HOME lib directory call append to build the CLASSPATH variable. -for %%i in ("%IOTDB_CLI_HOME%\lib\*.jar") do call :append "%%i" -goto okClasspath - -:append -set CLASSPATH=%CLASSPATH%;%1 -goto :eof +set CLASSPATH=%IOTDB_CLI_HOME%\lib\* REM ----------------------------------------------------------------------------- -:okClasspath "%JAVA_HOME%\bin\java" -DIOTDB_CLI_HOME=%IOTDB_CLI_HOME% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS% %* diff --git a/client/src/assembly/resources/tools/import-csv.bat b/client/src/assembly/resources/tools/import-csv.bat index ea514eae46acb077f70d46206c1fbd492855071a..c264bbf0015be95dd20d4fd036663b7626bf44b8 100644 --- a/client/src/assembly/resources/tools/import-csv.bat +++ b/client/src/assembly/resources/tools/import-csv.bat @@ -37,19 +37,9 @@ set JAVA_OPTS=-ea^ -DIOTDB_CLI_HOME=%IOTDB_CLI_HOME% @REM ***** CLASSPATH library setting ***** -@REM Ensure that any user defined CLASSPATH variables are not used on startup -set CLASSPATH="" - -REM For each jar in the IOTDB_CLI_HOME lib directory call append to build the CLASSPATH variable. -for %%i in ("%IOTDB_CLI_HOME%\lib\*.jar") do call :append "%%i" -goto okClasspath - -:append -set CLASSPATH=%CLASSPATH%;%1 -goto :eof +set CLASSPATH=%IOTDB_CLI_HOME%\lib\* REM ----------------------------------------------------------------------------- -:okClasspath "%JAVA_HOME%\bin\java" -DIOTDB_CLI_HOME=%IOTDB_CLI_HOME% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS% %* diff --git a/client/src/test/java/org/apache/iotdb/client/AbstractScript.java b/client/src/test/java/org/apache/iotdb/client/AbstractScript.java index 79c5daf19e819c80a6a95d134a807ede86d25817..38e6df7a3a2dc0ed3a42f4af91ecbf9918144c4a 100644 --- a/client/src/test/java/org/apache/iotdb/client/AbstractScript.java +++ b/client/src/test/java/org/apache/iotdb/client/AbstractScript.java @@ -55,12 +55,7 @@ public abstract class AbstractScript { throw new RuntimeException("user.dir " + userDir.getAbsolutePath() + " doesn't exist."); } File targetDir = new File(userDir, "target"); - File[] files = targetDir.listFiles(new FileFilter() { - @Override - public boolean accept(File pathname) { - return pathname.isDirectory() && pathname.getName().startsWith("iotdb-client-"); - } - }); + File[] files = targetDir.listFiles(pathname -> pathname.isDirectory() && pathname.getName().startsWith("iotdb-client-")); if(files.length != 1) { throw new RuntimeException( "Exactly one directory starting with 'iotdb-client-' should have been found, but was " + files.length); diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithRowBatch.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithRowBatch.java index 4bac3731c78cb9f728f5c38c74c148f1bbc20734..bb9fc322b193a0f9f5d265992ca97b24fea5e674 100644 --- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithRowBatch.java +++ b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithRowBatch.java @@ -19,9 +19,10 @@ package org.apache.iotdb.tsfile; -import java.io.File; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; + +import java.io.File; import org.apache.iotdb.tsfile.write.TsFileWriter; import org.apache.iotdb.tsfile.write.schema.Schema; import org.apache.iotdb.tsfile.write.schema.MeasurementSchema; diff --git a/server/pom.xml b/server/pom.xml index 9055d2867e060a3a1e761ff59a40095e62c937dc..1fab01fa1ea5a3c175283502803c4c63a10f40b7 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -85,6 +85,25 @@ powermock-api-mockito2 test + + org.apache.hadoop + hadoop-common + ${hadoop.version} + + + org.slf4j + slf4j-log4j12 + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties index 048acd571d65daf5c6c0f9428e3be286f7c4e6de..42f527b86f7afbdd1a6f03347c8135438be02113 100644 --- a/server/src/assembly/resources/conf/iotdb-engine.properties +++ b/server/src/assembly/resources/conf/iotdb-engine.properties @@ -121,6 +121,10 @@ timestamp_precision=ms # If its prefix is "/", then the path is absolute. Otherwise, it is relative. # wal_dir=data/wal + +# Storage file system. Currently, Tsfile supports to be stored in LOCAL file system or HDFS. +storage_fs=LOCAL + #################### ### Memory Control Configuration #################### diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java index d440e26ffe703cecce16765403c688f909e6181d..e464e5dbef61508c7e748ed4996e8b6ccc138293 100644 --- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java +++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java @@ -18,6 +18,7 @@ */ package org.apache.iotdb.db.conf; +import org.apache.iotdb.db.engine.fileSystem.FSType; import java.io.File; import java.time.ZoneId; import java.util.ArrayList; @@ -272,7 +273,7 @@ public class IoTDBConfig { * Watermark method and parameters */ private String watermarkMethod = "GroupBasedLSBMethod(embed_row_cycle=5,embed_lsb_num=5)"; - + /** * How much memory (in byte) can be used by a single merge task. */ @@ -324,6 +325,11 @@ public class IoTDBConfig { private MergeFileStrategy mergeFileStrategy = MergeFileStrategy.MAX_SERIES_NUM; + /** + * Default storage is in local file system + */ + private FSType storageFs = FSType.LOCAL; + public IoTDBConfig() { // empty constructor } @@ -880,4 +886,12 @@ public class IoTDBConfig { } return null; } + + public FSType getStorageFs() { + return storageFs; + } + + public void setStorageFs(String storageFs) { + this.storageFs = FSType.valueOf(storageFs); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java index f621eb06ade26817a6f115c6042701821f2b439d..f1cf1dcf4ad3736245cd412b051f6ba7e1827a91 100644 --- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java +++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java @@ -18,17 +18,14 @@ */ package org.apache.iotdb.db.conf; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.time.ZoneId; -import java.util.Properties; import org.apache.iotdb.db.utils.FilePathUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.*; +import java.time.ZoneId; +import java.util.Properties; + public class IoTDBDescriptor { private static final Logger logger = LoggerFactory.getLogger(IoTDBDescriptor.class); @@ -252,14 +249,14 @@ public class IoTDBDescriptor { conf.setPerformanceStatMemoryInKB(Integer .parseInt(properties.getProperty("performance_stat_memory_in_kb", Integer.toString(conf.getPerformanceStatMemoryInKB())).trim())); - + int maxConcurrentClientNum = Integer.parseInt(properties. getProperty("rpc_max_concurrent_client_num", Integer.toString(conf.getRpcMaxConcurrentClientNum()).trim())); if (maxConcurrentClientNum <= 0) { maxConcurrentClientNum = 65535; } - + conf.setEnableWatermark(Boolean.parseBoolean(properties.getProperty("watermark_module_opened", Boolean.toString(conf.isEnableWatermark()).trim()))); conf.setWatermarkSecretKey( @@ -270,7 +267,8 @@ public class IoTDBDescriptor { properties.getProperty("watermark_method", conf.getWatermarkMethod())); conf.setRpcMaxConcurrentClientNum(maxConcurrentClientNum); - + + conf.setStorageFs(properties.getProperty("storage_fs")); } catch (IOException e) { logger.warn("Cannot load config file because, use default configuration", e); } catch (Exception e) { diff --git a/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FSType.java b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FSType.java new file mode 100644 index 0000000000000000000000000000000000000000..4bbe2ecfc856f875a9a1daff17d6eac48134755b --- /dev/null +++ b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FSType.java @@ -0,0 +1,24 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.db.engine.fileSystem; + +public enum FSType { + LOCAL, HDFS +} diff --git a/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FileFactory.java b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FileFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..5240f8cd09f86a5e35a4aa34a15b93c1300fe6f8 --- /dev/null +++ b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FileFactory.java @@ -0,0 +1,65 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.db.engine.fileSystem; + +import org.apache.iotdb.db.conf.IoTDBDescriptor; + +import java.io.File; +import java.net.URI; + +public enum FileFactory { + + INSTANCE; + + private static FSType FSType = IoTDBDescriptor.getInstance().getConfig().getStorageFs(); + + public File getFile(String pathname) { + if (FSType.equals(FSType.HDFS)) { + return new HdfsFile(pathname); + } else { + return new File(pathname); + } + } + + public File getFile(String parent, String child) { + if (FSType.equals(FSType.HDFS)) { + return new HdfsFile(parent, child); + } else { + return new File(parent, child); + } + } + + public File getFile(File parent, String child) { + if (FSType.equals(FSType.HDFS)) { + return new HdfsFile(parent, child); + } else { + return new File(parent, child); + } + } + + public File getFile(URI uri) { + if (FSType.equals(FSType.HDFS)) { + return new HdfsFile(uri); + } else { + return new File(uri); + } + } + +} \ No newline at end of file diff --git a/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/HdfsFile.java b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/HdfsFile.java new file mode 100644 index 0000000000000000000000000000000000000000..3378954ed385dffb7ef013b323fa4dd8f96d2de1 --- /dev/null +++ b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/HdfsFile.java @@ -0,0 +1,156 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.db.engine.fileSystem; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.*; +import org.apache.iotdb.tsfile.write.TsFileWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.net.URI; +import java.util.ArrayList; + +public class HdfsFile extends File { + + private Path hdfsPath; + + private static final Logger logger = LoggerFactory.getLogger(TsFileWriter.class); + + + public HdfsFile(String pathname) { + super(pathname); + hdfsPath = new Path(pathname); + } + + public HdfsFile(String parent, String child) { + super(parent, child); + } + + public HdfsFile(File parent, String child) { + super(parent, child); + } + + public HdfsFile(URI uri) { + super(uri); + } + + @Override + public String getAbsolutePath() { + return hdfsPath.toUri().toString(); + } + + @Override + public long length() { + try { + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + return fs.getFileStatus(hdfsPath).getLen(); + } catch (IOException e) { + logger.error("Fail to get length of the file. ", e); + return 0; + } + } + + @Override + public boolean exists() { + try { + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + return fs.exists(hdfsPath); + } catch (IOException e) { + logger.error("Fail to check whether the file or directory exists. ", e); + return false; + } + } + + @Override + public File[] listFiles() { + ArrayList files = new ArrayList<>(); + try { + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + RemoteIterator iterator = fs.listFiles(hdfsPath, true); + while (iterator.hasNext()) { + LocatedFileStatus fileStatus = iterator.next(); + Path fullPath = fileStatus.getPath(); + files.add(new HdfsFile(fullPath.toUri())); + } + return files.toArray(new HdfsFile[files.size()]); + } catch (IOException e) { + logger.error("Fail to list files. ", e); + return null; + } + } + + @Override + public File[] listFiles(FileFilter filter) { + ArrayList files = new ArrayList<>(); + try { + PathFilter pathFilter = new GlobFilter(filter.toString()); // TODO + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + RemoteIterator iterator = fs.listFiles(hdfsPath, true); + while (iterator.hasNext()) { + LocatedFileStatus fileStatus = iterator.next(); + Path fullPath = fileStatus.getPath(); + if (pathFilter.accept(fullPath)) { + files.add(new HdfsFile(fullPath.toUri())); + } + } + return files.toArray(new HdfsFile[files.size()]); + } catch (IOException e) { + logger.error("Fail to list files. ", e); + return null; + } + } + + @Override + public File getParentFile() { + return new HdfsFile(hdfsPath.getParent().toUri()); + } + + @Override + public boolean createNewFile() throws IOException { + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + return fs.createNewFile(hdfsPath); + } + + @Override + public boolean delete() { + try { + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + return fs.delete(hdfsPath, true); + } catch (IOException e) { + logger.error("Fail to delete file. ", e); + return false; + } + } + + @Override + public boolean mkdirs() { + try { + FileSystem fs = hdfsPath.getFileSystem(new Configuration()); + return fs.mkdirs(hdfsPath); + } catch (IOException e) { + logger.error("Fail to create directory. ", e); + return false; + } + } +} diff --git a/server/src/main/java/org/apache/iotdb/db/engine/merge/manage/MergeResource.java b/server/src/main/java/org/apache/iotdb/db/engine/merge/manage/MergeResource.java index 042c499ad38a5a140ce807bdd0490d00b6f2c7d6..d8b6c4cac974e9e6f45ef0a74e7cb0c656933708 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/merge/manage/MergeResource.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/merge/manage/MergeResource.java @@ -19,19 +19,6 @@ package org.apache.iotdb.db.engine.merge.manage; -import static org.apache.iotdb.db.engine.merge.task.MergeTask.MERGE_SUFFIX; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; import org.apache.iotdb.db.engine.modification.Modification; import org.apache.iotdb.db.engine.storagegroup.TsFileResource; import org.apache.iotdb.db.query.reader.IPointReader; @@ -40,6 +27,7 @@ import org.apache.iotdb.db.utils.MergeUtils; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.TsFileSequenceReader; import org.apache.iotdb.tsfile.read.common.Chunk; import org.apache.iotdb.tsfile.read.common.Path; @@ -51,6 +39,14 @@ import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +import static org.apache.iotdb.db.engine.merge.task.MergeTask.MERGE_SUFFIX; + /** * MergeResource manages files and caches of readers, writers, MeasurementSchemas and * modifications to avoid unnecessary object creations and file openings. @@ -102,7 +98,8 @@ public class MergeResource { public RestorableTsFileIOWriter getMergeFileWriter(TsFileResource resource) throws IOException { RestorableTsFileIOWriter writer = fileWriterCache.get(resource); if (writer == null) { - writer = new RestorableTsFileIOWriter(new File(resource.getFile().getPath() + MERGE_SUFFIX)); + writer = new RestorableTsFileIOWriter(FileFactory.INSTANCE + .getFile(resource.getFile().getPath() + MERGE_SUFFIX)); fileWriterCache.put(resource, writer); } return writer; 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 1e41c57db7816d11800f751e7cc84ba30ef2cb01..389de7e6dceeb27a0267f88c1cfcbddd24031546 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 @@ -74,6 +74,7 @@ import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.common.Path; import org.apache.iotdb.tsfile.utils.Pair; import org.apache.iotdb.tsfile.write.schema.Schema; @@ -239,7 +240,7 @@ public class StorageGroupProcessor { private List getAllFiles(List folders) throws IOException { List tsFiles = new ArrayList<>(); for (String baseDir : folders) { - File fileFolder = new File(baseDir, storageGroupName); + File fileFolder = FileFactory.INSTANCE.getFile(baseDir, storageGroupName); if (!fileFolder.exists()) { continue; } @@ -494,11 +495,11 @@ public class StorageGroupProcessor { + TSFILE_SUFFIX; if (sequence) { - return new TsFileProcessor(storageGroupName, new File(filePath), + return new TsFileProcessor(storageGroupName, FileFactory.INSTANCE.getFile(filePath), schema, versionController, this::closeUnsealedTsFileProcessor, this::updateLatestFlushTimeCallback, sequence); } else { - return new TsFileProcessor(storageGroupName, new File(filePath), + return new TsFileProcessor(storageGroupName, FileFactory.INSTANCE.getFile(filePath), schema, versionController, this::closeUnsealedTsFileProcessor, () -> true, sequence); } diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java index 3a7af7ec5d2b7788535093c9d93ac4c976eec541..6dfdf57ec5fcbd188d60daa51837c7db220265ea 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java @@ -18,14 +18,7 @@ */ package org.apache.iotdb.db.engine.storagegroup; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,6 +30,7 @@ import org.apache.commons.io.FileUtils; import org.apache.iotdb.db.engine.modification.ModificationFile; import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk; import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; public class TsFileResource { @@ -124,8 +118,8 @@ public class TsFileResource { ReadWriteIOUtils.write(entry.getValue(), outputStream); } } - File src = new File(file + RESOURCE_SUFFIX + TEMP_SUFFIX); - File dest = new File(file + RESOURCE_SUFFIX); + File src = FileFactory.INSTANCE.getFile(file + RESOURCE_SUFFIX + TEMP_SUFFIX); + File dest = FileFactory.INSTANCE.getFile(file + RESOURCE_SUFFIX); dest.delete(); FileUtils.moveFile(src, dest); } @@ -167,7 +161,7 @@ public class TsFileResource { } public boolean fileExists() { - return new File(file+RESOURCE_SUFFIX).exists(); + return FileFactory.INSTANCE.getFile(file + RESOURCE_SUFFIX).exists(); } public void forceUpdateEndTime(String device, long time) { @@ -242,8 +236,8 @@ public class TsFileResource { public void remove() { file.delete(); - new File(file.getPath() + RESOURCE_SUFFIX).delete(); - new File(file.getPath() + ModificationFile.FILE_SUFFIX).delete(); + FileFactory.INSTANCE.getFile(file.getPath() + RESOURCE_SUFFIX).delete(); + FileFactory.INSTANCE.getFile(file.getPath() + ModificationFile.FILE_SUFFIX).delete(); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/sync/receiver/SyncServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/sync/receiver/SyncServiceImpl.java index 1dcd4f577373e3afac699ee459c0e6666ef14ad5..05c30a2736707b7de9f355f99ff1f450e829e7fd 100644 --- a/server/src/main/java/org/apache/iotdb/db/sync/receiver/SyncServiceImpl.java +++ b/server/src/main/java/org/apache/iotdb/db/sync/receiver/SyncServiceImpl.java @@ -18,12 +18,7 @@ */ package org.apache.iotdb.db.sync.receiver; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; @@ -66,6 +61,7 @@ import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadataIndex; import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.ReadOnlyTsFile; import org.apache.iotdb.tsfile.read.TsFileSequenceReader; import org.apache.iotdb.tsfile.read.common.Field; @@ -149,7 +145,7 @@ public class SyncServiceImpl implements SyncService.Iface { fileNodeStartTime.set(new HashMap<>()); fileNodeEndTime.set(new HashMap<>()); try { - FileUtils.deleteDirectory(new File(syncDataPath)); + FileUtils.deleteDirectory(FileFactory.INSTANCE.getFile(syncDataPath)); } catch (IOException e) { logger.error("cannot delete directory {} ", syncFolderPath); return false; @@ -157,7 +153,7 @@ public class SyncServiceImpl implements SyncService.Iface { for (String bufferWritePath : bufferWritePaths) { bufferWritePath = FilePathUtils.regularizePath(bufferWritePath); String backupPath = bufferWritePath + SYNC_SERVER + File.separator; - File backupDirectory = new File(backupPath, this.uuid.get()); + File backupDirectory = FileFactory.INSTANCE.getFile(backupPath, this.uuid.get()); if (backupDirectory.exists() && backupDirectory.list().length != 0) { try { FileUtils.deleteDirectory(backupDirectory); @@ -206,7 +202,7 @@ public class SyncServiceImpl implements SyncService.Iface { /** sync metadata, include storage group and timeseries **/ return Boolean.toString(loadMetadata()); } else if (status == SyncDataStatus.PROCESSING_STATUS) { - File file = new File(schemaFromSenderPath.get()); + File file = FileFactory.INSTANCE.getFile(schemaFromSenderPath.get()); if (!file.getParentFile().exists()) { try { file.getParentFile().mkdirs(); @@ -233,7 +229,7 @@ public class SyncServiceImpl implements SyncService.Iface { } md5OfReceiver = (new BigInteger(1, md.digest())).toString(16); if (!md5.equals(md5OfReceiver)) { - FileUtils.forceDelete(new File(schemaFromSenderPath.get())); + FileUtils.forceDelete(FileFactory.INSTANCE.getFile(schemaFromSenderPath.get())); } } catch (Exception e) { logger.error("Receiver cannot generate md5 {}", schemaFromSenderPath.get(), e); @@ -246,7 +242,7 @@ public class SyncServiceImpl implements SyncService.Iface { * Load metadata from sender */ private boolean loadMetadata() { - if (new File(schemaFromSenderPath.get()).exists()) { + if (FileFactory.INSTANCE.getFile(schemaFromSenderPath.get()).exists()) { try (BufferedReader br = new BufferedReader( new java.io.FileReader(schemaFromSenderPath.get()))) { String metadataOperation; @@ -331,7 +327,7 @@ public class SyncServiceImpl implements SyncService.Iface { syncDataPath = FilePathUtils.regularizePath(syncDataPath); filePath = syncDataPath + filePath; if (status == SyncDataStatus.PROCESSING_STATUS) { // there are still data stream to add - File file = new File(filePath); + File file = FileFactory.INSTANCE.getFile(filePath); if (!file.getParentFile().exists()) { try { file.getParentFile().mkdirs(); @@ -363,7 +359,7 @@ public class SyncServiceImpl implements SyncService.Iface { logger.info(String.format("Receiver has received %d files from sender", fileNum.get())); } else { - FileUtils.forceDelete(new File(filePath)); + FileUtils.forceDelete(FileFactory.INSTANCE.getFile(filePath)); } } catch (Exception e) { logger.error("Receiver cannot generate md5 {}", filePath, e); @@ -389,7 +385,7 @@ public class SyncServiceImpl implements SyncService.Iface { * Get all tsfiles' info which are sent from sender, it is preparing for merging these data */ public void getFileNodeInfo() throws IOException { - File dataFileRoot = new File(syncDataPath); + File dataFileRoot = FileFactory.INSTANCE.getFile(syncDataPath); File[] files = dataFileRoot.listFiles(); int processedNum = 0; for (File storageGroupPB : files) { @@ -469,7 +465,7 @@ public class SyncServiceImpl implements SyncService.Iface { String header = syncDataPath; String relativePath = path.substring(header.length()); TsFileResource fileNode = new TsFileResource( - new File(DirectoryManager.getInstance().getNextFolderIndexForSequenceFile() + + FileFactory.INSTANCE.getFile(DirectoryManager.getInstance().getNextFolderIndexForSequenceFile() + File.separator + relativePath), startTimeMap, endTimeMap ); // call interface of load external file @@ -718,7 +714,7 @@ public class SyncServiceImpl implements SyncService.Iface { fileNodeEndTime.remove(); schemaFromSenderPath.remove(); try { - FileUtils.deleteDirectory(new File(syncFolderPath)); + FileUtils.deleteDirectory(FileFactory.INSTANCE.getFile(syncFolderPath)); } catch (IOException e) { logger.error("can not delete directory {}", syncFolderPath, e); } diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java index ed384ce2abb8a3d29054c4ba141b448314de088d..8b8de72c5938c1aa94e31d8cdb1c1222a8d1c6eb 100644 --- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java +++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java @@ -22,8 +22,11 @@ package org.apache.iotdb.db.tools; import java.io.File; import java.io.IOException; import java.util.Arrays; +import java.util.Comparator; + import org.apache.iotdb.db.engine.storagegroup.TsFileResource; import org.apache.iotdb.db.qp.constant.DatetimeUtils; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; /** * this tool can analyze the tsfile.resource files from a folder. @@ -36,10 +39,9 @@ public class TsFileResourcePrinter { if (args.length >= 1) { folder = args[0]; } - File folderFile = new File(folder); - File[] files = folderFile.listFiles((dir, name) -> name.endsWith(".tsfile.resource")); - Arrays.sort(files, (x, y) -> Long - .compare(Long.valueOf(x.getName().split("-")[0]), Long.valueOf(y.getName().split("-")[0]))); + File folderFile = FileFactory.INSTANCE.getFile(folder); + File[] files = folderFile.listFiles(file -> file.getName().endsWith(".tsfile.resource")); + Arrays.sort(files, Comparator.comparingLong(x -> Long.valueOf(x.getName().split("-")[0]))); for (File file : files) { printResource(file.getAbsolutePath()); @@ -49,7 +51,7 @@ public class TsFileResourcePrinter { public static void printResource(String filename) throws IOException { filename = filename.substring(0, filename.length() - 9); - TsFileResource resource = new TsFileResource(new File(filename)); + TsFileResource resource = new TsFileResource(FileFactory.INSTANCE.getFile(filename)); System.err.println(String.format("analyzing %s ...", filename)); resource.deSerialize(); diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java index cf8ee79a0745ae3c7441cc987dee1857236c7d4a..303919516a93c2d330b2477b216dd1e52bb9c762 100644 --- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java +++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java @@ -38,6 +38,7 @@ import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadata; import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadataIndex; import org.apache.iotdb.tsfile.file.metadata.TsFileMetaData; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.TsFileSequenceReader; import org.apache.iotdb.tsfile.write.schema.Schema; import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter; @@ -81,7 +82,7 @@ public class TsFileRecoverPerformer { this.logReplayer = new LogReplayer(logNodePrefix, insertFilePath, tsFileResource.getModFile(), versionController, tsFileResource, schema, recoverMemTable, acceptUnseq); - File insertFile = new File(insertFilePath); + File insertFile = FileFactory.INSTANCE.getFile(insertFilePath); if (!insertFile.exists()) { logger.error("TsFile {} is missing, will skip its recovery.", insertFilePath); return; @@ -141,7 +142,7 @@ public class TsFileRecoverPerformer { // clean logs try { MultiFileLogNodeManager.getInstance() - .deleteNode(logNodePrefix + new File(insertFilePath).getName()); + .deleteNode(logNodePrefix + FileFactory.INSTANCE.getFile(insertFilePath).getName()); } catch (IOException e) { throw new ProcessorException(e); } diff --git a/server/src/test/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskTest.java b/server/src/test/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskTest.java index 09b34e88f3d6cd821e5813cb377902bf7d567a2f..558614463b3bd523c1058251398a04ac4cbeaaa5 100644 --- a/server/src/test/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskTest.java +++ b/server/src/test/java/org/apache/iotdb/db/engine/memtable/MemTableFlushTaskTest.java @@ -21,12 +21,12 @@ package org.apache.iotdb.db.engine.memtable; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import java.io.File; import java.util.concurrent.ExecutionException; import org.apache.iotdb.db.engine.MetadataManagerHelper; import org.apache.iotdb.db.engine.flush.MemTableFlushTask; import org.apache.iotdb.db.utils.EnvironmentUtils; import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter; import org.junit.After; import org.junit.Before; @@ -45,7 +45,7 @@ public class MemTableFlushTaskTest { public void setUp() throws Exception { MetadataManagerHelper.initMetadata(); EnvironmentUtils.envSetUp(); - writer = new RestorableTsFileIOWriter(new File(filePath)); + writer = new RestorableTsFileIOWriter(FileFactory.INSTANCE.getFile(filePath)); memTable = new PrimitiveMemTable(); } diff --git a/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java b/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java index cab3a59a6e4f3c7bed1840cd932ecb36e402f82b..853ceaf44bc8b3b3de34eab7d5f5770eb090a1a7 100644 --- a/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java +++ b/server/src/test/java/org/apache/iotdb/db/engine/merge/MergeTest.java @@ -40,6 +40,7 @@ import org.apache.iotdb.tsfile.exception.write.WriteProcessException; import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.write.TsFileWriter; import org.apache.iotdb.tsfile.write.record.TSRecord; import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint; @@ -114,18 +115,18 @@ abstract class MergeTest { private void prepareFiles(int seqFileNum, int unseqFileNum) throws IOException, WriteProcessException { for (int i = 0; i < seqFileNum; i++) { - File file = new File(i + "seq.tsfile"); + File file = FileFactory.INSTANCE.getFile(i + "seq.tsfile"); TsFileResource tsFileResource = new TsFileResource(file); seqResources.add(tsFileResource); prepareFile(tsFileResource, i * ptNum, ptNum, 0); } for (int i = 0; i < unseqFileNum; i++) { - File file = new File(i + "unseq.tsfile"); + File file = FileFactory.INSTANCE.getFile(i + "unseq.tsfile"); TsFileResource tsFileResource = new TsFileResource(file); unseqResources.add(tsFileResource); prepareFile(tsFileResource, i * ptNum, ptNum * (i + 1) / unseqFileNum, 10000); } - File file = new File(unseqFileNum + "unseq.tsfile"); + File file = FileFactory.INSTANCE.getFile(unseqFileNum + "unseq.tsfile"); TsFileResource tsFileResource = new TsFileResource(file); unseqResources.add(tsFileResource); prepareFile(tsFileResource, 0, ptNum * unseqFileNum, 20000); diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorTest.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorTest.java index a61534ab9d9baa465a7908e17393670692c161c5..407dd9425832b0b9aa0de0eb6e0e20529d3316d1 100644 --- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorTest.java +++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessorTest.java @@ -22,7 +22,6 @@ import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.Iterator; @@ -42,6 +41,7 @@ import org.apache.iotdb.tsfile.exception.write.WriteProcessException; import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetaData; import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.utils.Pair; import org.apache.iotdb.tsfile.write.record.TSRecord; import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint; @@ -76,7 +76,7 @@ public class TsFileProcessorTest { @Test public void testWriteAndFlush() throws WriteProcessException, IOException, TsFileProcessorException { - processor = new TsFileProcessor(storageGroup, new File(filePath), + processor = new TsFileProcessor(storageGroup, FileFactory.INSTANCE.getFile(filePath), SchemaUtils.constructSchema(deviceId), SysTimeVersionController.INSTANCE, x -> { }, () -> true, true); @@ -123,7 +123,7 @@ public class TsFileProcessorTest { @Test public void testWriteAndRestoreMetadata() throws IOException { - processor = new TsFileProcessor(storageGroup, new File(filePath), + processor = new TsFileProcessor(storageGroup, FileFactory.INSTANCE.getFile(filePath), SchemaUtils.constructSchema(deviceId), SysTimeVersionController.INSTANCE, x -> { }, () -> true, true); @@ -168,7 +168,7 @@ public class TsFileProcessorTest { RestorableTsFileIOWriter tsFileIOWriter = processor.getWriter(); List chunkGroupMetaDataList = tsFileIOWriter.getChunkGroupMetaDatas(); RestorableTsFileIOWriter restorableTsFileIOWriter = new RestorableTsFileIOWriter( - new File(filePath)); + FileFactory.INSTANCE.getFile(filePath)); List restoredChunkGroupMetaDataList = restorableTsFileIOWriter .getChunkGroupMetaDatas(); assertEquals(chunkGroupMetaDataList.size(), restoredChunkGroupMetaDataList.size()); @@ -190,7 +190,7 @@ public class TsFileProcessorTest { @Test public void testMultiFlush() throws WriteProcessException, IOException, TsFileProcessorException { - processor = new TsFileProcessor(storageGroup, new File(filePath), + processor = new TsFileProcessor(storageGroup, FileFactory.INSTANCE.getFile(filePath), SchemaUtils.constructSchema(deviceId), SysTimeVersionController.INSTANCE, x -> { }, () -> true, true); @@ -226,7 +226,7 @@ public class TsFileProcessorTest { @Test public void testWriteAndClose() throws WriteProcessException, IOException { - processor = new TsFileProcessor(storageGroup, new File(filePath), + processor = new TsFileProcessor(storageGroup, FileFactory.INSTANCE.getFile(filePath), SchemaUtils.constructSchema(deviceId), SysTimeVersionController.INSTANCE, unsealedTsFileProcessor -> { TsFileResource resource = unsealedTsFileProcessor.getTsFileResource(); diff --git a/server/src/test/java/org/apache/iotdb/db/query/control/FileReaderManagerTest.java b/server/src/test/java/org/apache/iotdb/db/query/control/FileReaderManagerTest.java index 683eb674b9d5bbce8b96835af91dcf22a19471b3..0545df1199a57b1fc43bdcea2be0e40f233108d4 100644 --- a/server/src/test/java/org/apache/iotdb/db/query/control/FileReaderManagerTest.java +++ b/server/src/test/java/org/apache/iotdb/db/query/control/FileReaderManagerTest.java @@ -22,10 +22,11 @@ import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; -import java.nio.file.Files; + import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.engine.storagegroup.TsFileResource; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -60,7 +61,7 @@ public class FileReaderManagerTest { TsFileResource[] tsFileResources = new TsFileResource[MAX_FILE_SIZE + 1]; for (int i = 1; i <= MAX_FILE_SIZE; i++) { - File file = new File(filePath + i); + File file = FileFactory.INSTANCE.getFile(filePath + i); file.createNewFile(); tsFileResources[i] = new TsFileResource(file); } @@ -115,7 +116,7 @@ public class FileReaderManagerTest { t2.join(); for (int i = 1; i <= MAX_FILE_SIZE; i++) { - TsFileResource tsFile = new TsFileResource(new File(filePath + i)); + TsFileResource tsFile = new TsFileResource(FileFactory.INSTANCE.getFile(filePath + i)); Assert.assertTrue(manager.contains(tsFile, false)); } @@ -135,8 +136,8 @@ public class FileReaderManagerTest { FileReaderManager.getInstance().closeAndRemoveAllOpenedReaders(); for (int i = 1; i < MAX_FILE_SIZE; i++) { - File file = new File(filePath + i); - boolean result = Files.deleteIfExists(file.toPath()); + File file = FileFactory.INSTANCE.getFile(filePath + i); + boolean result = !file.exists() || file.delete(); if (!result) { fail(); } diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java index b8c0613dcc5040ff822e4ae7d142d6d22db35934..12bfbbcf832b143218055cbf659bc8932b80b567 100644 --- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java +++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java @@ -43,6 +43,7 @@ import org.apache.iotdb.db.writelog.manager.MultiFileLogNodeManager; import org.apache.iotdb.db.writelog.node.WriteLogNode; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.common.Path; import org.apache.iotdb.tsfile.write.schema.Schema; import org.apache.iotdb.tsfile.write.schema.MeasurementSchema; @@ -53,8 +54,8 @@ public class LogReplayerTest { @Test public void test() throws IOException, ProcessorException { String logNodePrefix = "testLogNode"; - File tsFile = new File("temp", "test.ts"); - File modF = new File("test.mod"); + File tsFile = FileFactory.INSTANCE.getFile("temp", "test.ts"); + File modF = FileFactory.INSTANCE.getFile("test.mod"); ModificationFile modFile = new ModificationFile(modF.getPath()); VersionController versionController = new VersionController() { @Override diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java index 908337ad5388345907687cc28e52f9e28224b638..67b0e2b77a6c048174fcac78dad6a229b9dc360e 100644 --- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java +++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java @@ -35,6 +35,7 @@ import org.apache.iotdb.db.writelog.node.WriteLogNode; import org.apache.iotdb.tsfile.exception.write.WriteProcessException; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.ReadOnlyTsFile; import org.apache.iotdb.tsfile.read.TsFileSequenceReader; import org.apache.iotdb.tsfile.read.common.Field; @@ -76,7 +77,7 @@ public class SeqTsFileRecoverTest { @Before public void setup() throws IOException, WriteProcessException { - tsF = new File("temp", "test.ts"); + tsF = FileFactory.INSTANCE.getFile("temp", "test.ts"); tsF.getParentFile().mkdirs(); schema = new Schema(); diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java index 8d1933117f5e5643c6a22110b1be85535b9070ac..924081feeabd4f81f97c9d7ab78b8b94b5a0949f 100644 --- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java +++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java @@ -37,6 +37,7 @@ import org.apache.iotdb.tsfile.exception.write.WriteProcessException; import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import org.apache.iotdb.db.engine.fileSystem.FileFactory; import org.apache.iotdb.tsfile.read.TsFileSequenceReader; import org.apache.iotdb.tsfile.read.common.Chunk; import org.apache.iotdb.tsfile.read.common.Path; @@ -79,7 +80,7 @@ public class UnseqTsFileRecoverTest { @Before public void setup() throws IOException, WriteProcessException { - tsF = new File("temp", "test.ts"); + tsF = FileFactory.INSTANCE.getFile("temp", "test.ts"); tsF.getParentFile().mkdirs(); schema = new Schema(); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java index 10c5f425d334893b25b48b5946fd97d8dd3e1241..102c01a4949937b771a44b0cdec5fb6978ab5e02 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java @@ -20,9 +20,7 @@ package org.apache.iotdb.tsfile.write.writer; import java.io.File; import java.io.IOException; -import java.util.HashMap; import java.util.Map; -import java.util.Map.Entry; import org.apache.iotdb.tsfile.exception.write.TsFileNotCompleteException; import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadata; import org.apache.iotdb.tsfile.file.metadata.TsDeviceMetadataIndex; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java index ff2a24c87d7bf9dc85591978a2af5d1347a96afd..26ff64bc0ef6867e75eeafc60116ae432b97443b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java @@ -230,7 +230,7 @@ public class TsFileIOWriter { out.write(chunk.getData()); endChunk(chunkMetadata.getNumOfPoints()); } - + /** * end chunk and write some log. * @@ -376,12 +376,8 @@ public class TsFileIOWriter { } /** -<<<<<<< HEAD - * close the outputStream or file channel without writing FileMetadata. -======= * close the outputStream or file channel without writing FileMetadata. This is just used for * Testing. ->>>>>>> master */ public void close() throws IOException { canWrite = false;