You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2019/09/17 10:48:35 UTC
[incubator-iotdb] branch master updated: [IOTDB-219] Add config of
tsfile_storage_fs in iotdb-engine.properties (#395)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin 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 0a4df04 [IOTDB-219] Add config of tsfile_storage_fs in iotdb-engine.properties (#395)
0a4df04 is described below
commit 0a4df04ee589c91d312dd5d5ba60ad1c92a10f5c
Author: Zesong Sun <15...@smail.nju.edu.cn>
AuthorDate: Tue Sep 17 18:48:31 2019 +0800
[IOTDB-219] Add config of tsfile_storage_fs in iotdb-engine.properties (#395)
* Add configuration ip and port
* Add config of tsfile_storage_fs in iotdb-engine.properties
---
.../4-Deployment and Management/2-Configuration.md | 27 ++++++++++++
.../4-Deployment and Management/2-Configuration.md | 27 ++++++++++++
.../resources/conf/iotdb-engine.properties | 10 ++++-
.../iotdb/db/auth/role/LocalFileRoleAccessor.java | 19 ++++----
.../iotdb/db/auth/user/LocalFileUserAccessor.java | 38 ++++++++--------
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 51 +++++++++++++++++++---
.../org/apache/iotdb/db/conf/IoTDBConfigCheck.java | 8 ++--
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 11 ++++-
.../iotdb/db/conf/adapter/CompressionRatio.java | 7 +--
.../org/apache/iotdb/db/engine/StorageEngine.java | 4 +-
.../apache/iotdb/db/engine/fileSystem/FSType.java | 24 ----------
.../{FileFactory.java => SystemFileFactory.java} | 16 ++++---
.../iotdb/db/engine/merge/recover/LogAnalyzer.java | 8 ++--
.../engine/storagegroup/StorageGroupProcessor.java | 6 +--
.../version/SimpleFileVersionController.java | 9 ++--
.../org/apache/iotdb/db/metadata/MManager.java | 9 ++--
.../iotdb/db/monitor/collector/FileSize.java | 5 ++-
.../java/org/apache/iotdb/db/service/Monitor.java | 5 ++-
.../iotdb/db/sync/receiver/SyncServiceImpl.java | 21 +++++----
.../apache/iotdb/db/tools/MemEst/MemEstTool.java | 5 ++-
.../iotdb/db/tools/TsFileResourcePrinter.java | 6 +--
.../java/org/apache/iotdb/db/tools/WalChecker.java | 6 ++-
.../org/apache/iotdb/db/writelog/io/LogWriter.java | 3 +-
.../db/writelog/node/ExclusiveWriteLogNode.java | 12 ++---
.../iotdb/db/writelog/recover/LogReplayer.java | 5 ++-
.../writelog/recover/TsFileRecoverPerformer.java | 4 +-
.../apache/iotdb/db/engine/merge/MergeTest.java | 8 ++--
.../engine/storagegroup/TsFileProcessorTest.java | 12 ++---
.../db/query/control/FileReaderManagerTest.java | 8 ++--
.../iotdb/db/writelog/recover/LogReplayerTest.java | 6 +--
.../db/writelog/recover/SeqTsFileRecoverTest.java | 4 +-
.../writelog/recover/UnseqTsFileRecoverTest.java | 4 +-
32 files changed, 243 insertions(+), 145 deletions(-)
diff --git a/docs/Documentation-CHN/UserGuide/4-Deployment and Management/2-Configuration.md b/docs/Documentation-CHN/UserGuide/4-Deployment and Management/2-Configuration.md
index d8816bc..7c101f4 100644
--- a/docs/Documentation-CHN/UserGuide/4-Deployment and Management/2-Configuration.md
+++ b/docs/Documentation-CHN/UserGuide/4-Deployment and Management/2-Configuration.md
@@ -292,3 +292,30 @@
|类型| Int32 |
|默认值|600 |
|改后生效方式|重启服务器生效|
+
+* tsfile\_storage\_fs
+
+|名字| tsfile\_storage\_fs |
+|:---:|:---|
+|描述| Tsfile和相关数据文件的存储文件系统。目前支持LOCAL(本地文件系统)和HDFS两种|
+|类型| String |
+|默认值|LOCAL |
+|改后生效方式|重启服务器生效|
+
+* hdfs\_ip
+
+|名字| hdfs\_ip |
+|:---:|:---|
+|描述| 在Tsfile和相关数据文件存储到HDFS的情况下用于配置HDFS的IP|
+|类型| String |
+|默认值|localhost |
+|改后生效方式|重启服务器生效|
+
+* hdfs\_port
+
+|名字| hdfs\_port |
+|:---:|:---|
+|描述| 在Tsfile和相关数据文件存储到HDFS的情况下用于配置HDFS的端口|
+|类型| String |
+|默认值|9000 |
+|改后生效方式|重启服务器生效|
diff --git a/docs/Documentation/UserGuide/4-Deployment and Management/2-Configuration.md b/docs/Documentation/UserGuide/4-Deployment and Management/2-Configuration.md
index 031c4d1..ec8494c 100644
--- a/docs/Documentation/UserGuide/4-Deployment and Management/2-Configuration.md
+++ b/docs/Documentation/UserGuide/4-Deployment and Management/2-Configuration.md
@@ -327,3 +327,30 @@ The detail of each variables are as follows:
|Type| Int32 |
|Default|600 |
|Effective|After restart system|
+
+* tsfile\_storage\_fs
+
+|Name| tsfile\_storage\_fs |
+|:---:|:---|
+|Description| The storage file system of Tsfile and related data files. Currently LOCAL file system and HDFS are supported.|
+|Type| String |
+|Default|LOCAL |
+|Effective|After restart system|
+
+* hdfs\_ip
+
+|Name| hdfs\_ip |
+|:---:|:---|
+|Description| IP of HDFS if Tsfile and related data files are stored in HDFS|
+|Type| String |
+|Default|localhost |
+|Effective|After restart system|
+
+* hdfs\_port
+
+|Name| hdfs\_port |
+|:---:|:---|
+|Description| Port of HDFS if Tsfile and related data files are stored in HDFS|
+|Type| String |
+|Default|9000 |
+|Effective|After restart system|
diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties
index 42f527b..eacc84b 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -122,8 +122,14 @@ timestamp_precision=ms
# wal_dir=data/wal
-# Storage file system. Currently, Tsfile supports to be stored in LOCAL file system or HDFS.
-storage_fs=LOCAL
+# TSFile storage file system. Currently, Tsfile are supported to be stored in LOCAL file system or HDFS.
+tsfile_storage_fs=LOCAL
+
+# If using HDFS, hadoop ip can be configured
+hdfs_ip=localhost
+
+# If using HDFS, hadoop port can be configured
+hdfs_port=9000
####################
### Memory Control Configuration
diff --git a/server/src/main/java/org/apache/iotdb/db/auth/role/LocalFileRoleAccessor.java b/server/src/main/java/org/apache/iotdb/db/auth/role/LocalFileRoleAccessor.java
index 3bf3d56..253fe5f 100644
--- a/server/src/main/java/org/apache/iotdb/db/auth/role/LocalFileRoleAccessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/auth/role/LocalFileRoleAccessor.java
@@ -33,6 +33,7 @@ import java.util.Set;
import org.apache.iotdb.db.auth.entity.PathPrivilege;
import org.apache.iotdb.db.auth.entity.Role;
import org.apache.iotdb.db.conf.IoTDBConstant;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.utils.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,11 +67,11 @@ public class LocalFileRoleAccessor implements IRoleAccessor {
@Override
public Role loadRole(String rolename) throws IOException {
- File roleProfile = new File(
+ File roleProfile = SystemFileFactory.INSTANCE.getFile(
roleDirPath + File.separator + rolename + IoTDBConstant.PROFILE_SUFFIX);
if (!roleProfile.exists() || !roleProfile.isFile()) {
// System may crush before a newer file is written, so search for back-up file.
- File backProfile = new File(
+ File backProfile = SystemFileFactory.INSTANCE.getFile(
roleDirPath + File.separator + rolename + IoTDBConstant.PROFILE_SUFFIX + TEMP_SUFFIX);
if (backProfile.exists() && backProfile.isFile()) {
roleProfile = backProfile;
@@ -100,7 +101,7 @@ public class LocalFileRoleAccessor implements IRoleAccessor {
@Override
public void saveRole(Role role) throws IOException {
- File roleProfile = new File(
+ File roleProfile = SystemFileFactory.INSTANCE.getFile(
roleDirPath + File.separator + role.getName() + IoTDBConstant.PROFILE_SUFFIX + TEMP_SUFFIX);
try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(roleProfile))) {
try {
@@ -121,16 +122,16 @@ public class LocalFileRoleAccessor implements IRoleAccessor {
}
}
- File oldFile = new File(
+ File oldFile = SystemFileFactory.INSTANCE.getFile(
roleDirPath + File.separator + role.getName() + IoTDBConstant.PROFILE_SUFFIX);
IOUtils.replaceFile(roleProfile, oldFile);
}
@Override
public boolean deleteRole(String rolename) throws IOException {
- File roleProfile = new File(
+ File roleProfile = SystemFileFactory.INSTANCE.getFile(
roleDirPath + File.separator + rolename + IoTDBConstant.PROFILE_SUFFIX);
- File backFile = new File(
+ File backFile = SystemFileFactory.INSTANCE.getFile(
roleDirPath + File.separator + rolename + IoTDBConstant.PROFILE_SUFFIX + TEMP_SUFFIX);
if (!roleProfile.exists() && !backFile.exists()) {
return false;
@@ -144,7 +145,7 @@ public class LocalFileRoleAccessor implements IRoleAccessor {
@Override
public List<String> listAllRoles() {
- File roleDir = new File(roleDirPath);
+ File roleDir = SystemFileFactory.INSTANCE.getFile(roleDirPath);
String[] names = roleDir
.list((dir, name) -> name.endsWith(IoTDBConstant.PROFILE_SUFFIX) || name
.endsWith(TEMP_SUFFIX));
@@ -163,9 +164,9 @@ public class LocalFileRoleAccessor implements IRoleAccessor {
@Override
public void reset() {
- if (new File(roleDirPath).mkdirs()) {
+ if (SystemFileFactory.INSTANCE.getFile(roleDirPath).mkdirs()) {
logger.info("role info dir {} is created", roleDirPath);
- } else if (!new File(roleDirPath).exists()) {
+ } else if (!SystemFileFactory.INSTANCE.getFile(roleDirPath).exists()) {
logger.error("role info dir {} can not be created", roleDirPath);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/auth/user/LocalFileUserAccessor.java b/server/src/main/java/org/apache/iotdb/db/auth/user/LocalFileUserAccessor.java
index 8ee8856..c4fe1d0 100644
--- a/server/src/main/java/org/apache/iotdb/db/auth/user/LocalFileUserAccessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/auth/user/LocalFileUserAccessor.java
@@ -18,25 +18,21 @@
*/
package org.apache.iotdb.db.auth.user;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
import org.apache.iotdb.db.auth.entity.PathPrivilege;
import org.apache.iotdb.db.auth.entity.User;
import org.apache.iotdb.db.conf.IoTDBConstant;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.utils.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
/**
* This class loads a user's information from the corresponding file.The user file is a sequential
* file. User file schema: Int32 username bytes size Utf-8 username bytes Int32 Password bytes
@@ -75,11 +71,11 @@ public class LocalFileUserAccessor implements IUserAccessor {
*/
@Override
public User loadUser(String username) throws IOException {
- File userProfile = new File(
+ File userProfile = SystemFileFactory.INSTANCE.getFile(
userDirPath + File.separator + username + IoTDBConstant.PROFILE_SUFFIX);
if (!userProfile.exists() || !userProfile.isFile()) {
// System may crush before a newer file is renamed.
- File newProfile = new File(
+ File newProfile = SystemFileFactory.INSTANCE.getFile(
userDirPath + File.separator + username + IoTDBConstant.PROFILE_SUFFIX + TEMP_SUFFIX);
if (newProfile.exists() && newProfile.isFile()) {
if(!newProfile.renameTo(userProfile)) {
@@ -124,7 +120,7 @@ public class LocalFileUserAccessor implements IUserAccessor {
*/
@Override
public void saveUser(User user) throws IOException {
- File userProfile = new File(
+ File userProfile = SystemFileFactory.INSTANCE.getFile(
userDirPath + File.separator + user.getName() + IoTDBConstant.PROFILE_SUFFIX + TEMP_SUFFIX);
try(BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(userProfile))) {
try {
@@ -156,7 +152,7 @@ public class LocalFileUserAccessor implements IUserAccessor {
}
}
- File oldFile = new File(
+ File oldFile = SystemFileFactory.INSTANCE.getFile(
userDirPath + File.separator + user.getName() + IoTDBConstant.PROFILE_SUFFIX);
IOUtils.replaceFile(userProfile, oldFile);
}
@@ -170,9 +166,9 @@ public class LocalFileUserAccessor implements IUserAccessor {
*/
@Override
public boolean deleteUser(String username) throws IOException {
- File userProfile = new File(
+ File userProfile = SystemFileFactory.INSTANCE.getFile(
userDirPath + File.separator + username + IoTDBConstant.PROFILE_SUFFIX);
- File backFile = new File(
+ File backFile = SystemFileFactory.INSTANCE.getFile(
userDirPath + File.separator + username + IoTDBConstant.PROFILE_SUFFIX + TEMP_SUFFIX);
if (!userProfile.exists() && !backFile.exists()) {
return false;
@@ -186,7 +182,7 @@ public class LocalFileUserAccessor implements IUserAccessor {
@Override
public List<String> listAllUsers() {
- File userDir = new File(userDirPath);
+ File userDir = SystemFileFactory.INSTANCE.getFile(userDirPath);
String[] names = userDir
.list((dir, name) -> name.endsWith(IoTDBConstant.PROFILE_SUFFIX) || name
.endsWith(TEMP_SUFFIX));
@@ -205,9 +201,9 @@ public class LocalFileUserAccessor implements IUserAccessor {
@Override
public void reset() {
- if (new File(userDirPath).mkdirs()) {
+ if (SystemFileFactory.INSTANCE.getFile(userDirPath).mkdirs()) {
logger.info("user info dir {} is created", userDirPath);
- } else if (!new File(userDirPath).exists()) {
+ } else if (!SystemFileFactory.INSTANCE.getFile(userDirPath).exists()) {
logger.error("user info dir {} can not be created", userDirPath);
}
}
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 1b71c8e..34baf8f 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
@@ -327,9 +327,24 @@ public class IoTDBConfig {
private MergeFileStrategy mergeFileStrategy = MergeFileStrategy.MAX_SERIES_NUM;
/**
- * Default storage is in local file system
+ * Default system file storage is in local file system (unsupported)
*/
- private FSType storageFs = FSType.LOCAL;
+ private FSType systemFileStorageFs = FSType.LOCAL;
+
+ /**
+ * Default TSfile storage is in local file system
+ */
+ private FSType tsFileStorageFs = FSType.LOCAL;
+
+ /**
+ * Default HDFS ip is localhost
+ */
+ private String hdfsIp = "localhost";
+
+ /**
+ * Default HDFS port is 9000
+ */
+ private String hdfsPort = "9000";
public IoTDBConfig() {
// empty constructor
@@ -904,11 +919,35 @@ public class IoTDBConfig {
return null;
}
- public FSType getStorageFs() {
- return storageFs;
+ public FSType getSystemFileStorageFs() {
+ return systemFileStorageFs;
+ }
+
+ public void setSystemFileStorageFs(String systemFileStorageFs) {
+ this.systemFileStorageFs = FSType.valueOf(systemFileStorageFs);
+ }
+
+ public FSType getTsFileStorageFs() {
+ return tsFileStorageFs;
+ }
+
+ public void setTsFileStorageFs(String tsFileStorageFs) {
+ this.tsFileStorageFs = FSType.valueOf(tsFileStorageFs);
+ }
+
+ public String getHdfsIp() {
+ return hdfsIp;
+ }
+
+ public void setHdfsIp(String hdfsIp) {
+ this.hdfsIp = hdfsIp;
+ }
+
+ public String getHdfsPort() {
+ return hdfsPort;
}
- public void setStorageFs(String storageFs) {
- this.storageFs = FSType.valueOf(storageFs);
+ public void setHdfsPort(String hdfsPort) {
+ this.hdfsPort = hdfsPort;
}
}
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 59270e2..ad42d18 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
@@ -24,6 +24,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
+
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +55,7 @@ public class IoTDBConfigCheck {
}
public void createDir(String filepath) {
- File dir = new File(filepath);
+ File dir = SystemFileFactory.INSTANCE.getFile(filepath);
if (!dir.exists()) {
dir.mkdirs();
logger.info(" {} dir has been created.", SCHEMA_DIR);
@@ -63,7 +65,7 @@ public class IoTDBConfigCheck {
public void checkFile(String filepath) {
// create file : read timestamp precision from engine.properties, create system_properties.txt
// use output stream to write timestamp precision to file.
- File file = new File(filepath + File.separator + PROPERTIES_FILE_NAME);
+ File file = SystemFileFactory.INSTANCE.getFile(filepath + File.separator + PROPERTIES_FILE_NAME);
try {
if (!file.exists()) {
file.createNewFile();
@@ -77,7 +79,7 @@ public class IoTDBConfigCheck {
logger.error("Can not create {}.", file.getAbsolutePath(), e);
}
// get existed properties from system_properties.txt
- File inputFile = new File(filepath + File.separator + PROPERTIES_FILE_NAME);
+ File inputFile = SystemFileFactory.INSTANCE.getFile(filepath + File.separator + PROPERTIES_FILE_NAME);
try (FileInputStream inputStream = new FileInputStream(inputFile.toString())) {
properties.load(new InputStreamReader(inputStream, TSFileConfig.STRING_ENCODING));
if (!properties.getProperty("timestamp_precision").equals(TIMESTAMP_PRECISION)) {
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 f1cf1dc..98321f3 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
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.conf;
import org.apache.iotdb.db.utils.FilePathUtils;
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -268,7 +269,15 @@ public class IoTDBDescriptor {
conf.setRpcMaxConcurrentClientNum(maxConcurrentClientNum);
- conf.setStorageFs(properties.getProperty("storage_fs"));
+ conf.setTsFileStorageFs(properties.getProperty("tsfile_storage_fs"));
+ conf.setHdfsIp(properties.getProperty("hdfs_ip"));
+ conf.setHdfsPort(properties.getProperty("hdfs_port"));
+
+ // At the same time, set TSFileConfig
+ TSFileConfig.setTSFileStorageFs(properties.getProperty("tsfile_storage_fs"));
+ TSFileConfig.setHdfsIp(properties.getProperty("hdfs_ip"));
+ TSFileConfig.setHdfsPort(properties.getProperty("hdfs_port"));
+
} 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/conf/adapter/CompressionRatio.java b/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
index c7819fe..86e2470 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/adapter/CompressionRatio.java
@@ -24,6 +24,7 @@ import java.util.Locale;
import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.utils.FilePathUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,7 +68,7 @@ public class CompressionRatio {
private File directory;
private CompressionRatio() {
- directory = new File(
+ directory = SystemFileFactory.INSTANCE.getFile(
FilePathUtils.regularizePath(CONFIG.getSystemDir()) + COMPRESSION_RATIO_DIR);
restore();
}
@@ -79,11 +80,11 @@ public class CompressionRatio {
* @param currentCompressionRatio the compression ratio of the closing file.
*/
public synchronized void updateRatio(double currentCompressionRatio) throws IOException {
- File oldFile = new File(directory,
+ File oldFile = SystemFileFactory.INSTANCE.getFile(directory,
String.format(Locale.ENGLISH, RATIO_FILE_PATH_FORMAT, compressionRatioSum, calcTimes));
compressionRatioSum += currentCompressionRatio;
calcTimes++;
- File newFile = new File(directory,
+ File newFile = SystemFileFactory.INSTANCE.getFile(directory,
String.format(Locale.ENGLISH, RATIO_FILE_PATH_FORMAT, compressionRatioSum, calcTimes));
persist(oldFile, newFile);
if (LOGGER.isInfoEnabled()) {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index 3e36516..fc11c68 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.db.engine;
-import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
@@ -28,6 +27,7 @@ import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
@@ -78,7 +78,7 @@ public class StorageEngine implements IService {
systemDir = FilePathUtils.regularizePath(config.getSystemDir()) + "storage_groups";
// create systemDir
try {
- FileUtils.forceMkdir(new File(systemDir));
+ FileUtils.forceMkdir(SystemFileFactory.INSTANCE.getFile(systemDir));
} catch (IOException e) {
throw new StorageEngineFailureException("create system directory failed!");
}
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
deleted file mode 100644
index 4bbe2ec..0000000
--- a/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FSType.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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/SystemFileFactory.java
similarity index 73%
rename from server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FileFactory.java
rename to server/src/main/java/org/apache/iotdb/db/engine/fileSystem/SystemFileFactory.java
index 32e8121..ce6ffea 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/FileFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/fileSystem/SystemFileFactory.java
@@ -26,15 +26,16 @@ import org.apache.iotdb.tsfile.fileSystem.HDFSFile;
import java.io.File;
import java.net.URI;
-public enum FileFactory {
+public enum SystemFileFactory {
INSTANCE;
- private static FSType fsType = IoTDBDescriptor.getInstance().getConfig().getStorageFs();
+ private static FSType fsType = IoTDBDescriptor.getInstance().getConfig().getSystemFileStorageFs();
public File getFile(String pathname) {
if (fsType.equals(FSType.HDFS)) {
- return new HDFSFile(pathname);
+ throw new UnsupportedOperationException("Unsupported file system: " + fsType.name());
+ // return new HDFSFile(pathname);
} else {
return new File(pathname);
}
@@ -42,7 +43,8 @@ public enum FileFactory {
public File getFile(String parent, String child) {
if (fsType.equals(FSType.HDFS)) {
- return new HDFSFile(parent, child);
+ throw new UnsupportedOperationException("Unsupported file system: " + fsType.name());
+ // return new HDFSFile(parent, child);
} else {
return new File(parent, child);
}
@@ -50,7 +52,8 @@ public enum FileFactory {
public File getFile(File parent, String child) {
if (fsType.equals(FSType.HDFS)) {
- return new HDFSFile(parent, child);
+ throw new UnsupportedOperationException("Unsupported file system: " + fsType.name());
+ // return new HDFSFile(parent, child);
} else {
return new File(parent, child);
}
@@ -58,7 +61,8 @@ public enum FileFactory {
public File getFile(URI uri) {
if (fsType.equals(FSType.HDFS)) {
- return new HDFSFile(uri);
+ throw new UnsupportedOperationException("Unsupported file system: " + fsType.name());
+ // return new HDFSFile(uri);
} else {
return new File(uri);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/merge/recover/LogAnalyzer.java b/server/src/main/java/org/apache/iotdb/db/engine/merge/recover/LogAnalyzer.java
index b7d98fc..bde1971 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/merge/recover/LogAnalyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/merge/recover/LogAnalyzer.java
@@ -27,6 +27,8 @@ import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.Map.Entry;
+
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.merge.manage.MergeResource;
import org.apache.iotdb.db.engine.merge.task.MergeTask;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
@@ -174,7 +176,7 @@ public class LogAnalyzer {
status = Status.MERGE_START;
for (TsFileResource seqFile : resource.getSeqFiles()) {
- File mergeFile = new File(seqFile.getFile().getPath() + MergeTask.MERGE_SUFFIX);
+ File mergeFile = SystemFileFactory.INSTANCE.getFile(seqFile.getFile().getPath() + MergeTask.MERGE_SUFFIX);
fileLastPositions.put(mergeFile, 0L);
}
@@ -194,7 +196,7 @@ public class LogAnalyzer {
} else if (!currLine.contains(STR_END)) {
// file position
String[] splits = currLine.split(" ");
- File file = new File(splits[0]);
+ File file = SystemFileFactory.INSTANCE.getFile(splits[0]);
Long position = Long.parseLong(splits[1]);
tempFileLastPositions.put(file, position);
} else {
@@ -231,7 +233,7 @@ public class LogAnalyzer {
}
if (!currLine.contains(STR_END)) {
String[] splits = currLine.split(" ");
- currFile = new File(splits[0]);
+ currFile = SystemFileFactory.INSTANCE.getFile(splits[0]);
Long lastPost = Long.parseLong(splits[1]);
fileLastPositions.put(currFile, lastPost);
} else {
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 8ceae5b..2cd8c87 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
@@ -73,7 +73,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.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.fileSystem.TSFileFactory;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.utils.Pair;
@@ -185,7 +185,7 @@ public class StorageGroupProcessor {
this.schema = constructSchema(storageGroupName);
try {
- storageGroupSysDir = FileFactory.INSTANCE.getFile(systemInfoDir, storageGroupName);
+ storageGroupSysDir = SystemFileFactory.INSTANCE.getFile(systemInfoDir, storageGroupName);
if (storageGroupSysDir.mkdirs()) {
logger.info("Storage Group system Directory {} doesn't exist, create it",
storageGroupSysDir.getPath());
@@ -215,7 +215,7 @@ public class StorageGroupProcessor {
recoverUnseqFiles(unseqTsFiles);
String taskName = storageGroupName + "-" + System.currentTimeMillis();
- File mergingMods = FileFactory.INSTANCE.getFile(storageGroupSysDir, MERGING_MODIFICAITON_FILE_NAME);
+ File mergingMods = SystemFileFactory.INSTANCE.getFile(storageGroupSysDir, MERGING_MODIFICAITON_FILE_NAME);
if (mergingMods.exists()) {
mergingModification = new ModificationFile(mergingMods.getPath());
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java b/server/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java
index 53a93ee..80bd8ef 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/version/SimpleFileVersionController.java
@@ -23,6 +23,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,8 +76,8 @@ public class SimpleFileVersionController implements VersionController {
}
private void persist() throws IOException {
- File oldFile = new File(directoryPath, FILE_PREFIX + prevVersion);
- File newFile = new File(directoryPath, FILE_PREFIX + currVersion);
+ File oldFile = SystemFileFactory.INSTANCE.getFile(directoryPath, FILE_PREFIX + prevVersion);
+ File newFile = SystemFileFactory.INSTANCE.getFile(directoryPath, FILE_PREFIX + currVersion);
FileUtils.moveFile(oldFile, newFile);
logger.info("Version file updated, previous: {}, current: {}",
oldFile.getAbsolutePath(), newFile.getAbsolutePath());
@@ -84,7 +85,7 @@ public class SimpleFileVersionController implements VersionController {
}
private void restore() throws IOException {
- File directory = new File(directoryPath);
+ File directory = SystemFileFactory.INSTANCE.getFile(directoryPath);
File[] versionFiles = directory.listFiles((dir, name) -> name.startsWith(FILE_PREFIX));
File versionFile;
if (versionFiles != null && versionFiles.length > 0) {
@@ -105,7 +106,7 @@ public class SimpleFileVersionController implements VersionController {
}
}
} else {
- versionFile = new File(directory, FILE_PREFIX + "0");
+ versionFile = SystemFileFactory.INSTANCE.getFile(directory, FILE_PREFIX + "0");
prevVersion = 0;
new FileOutputStream(versionFile).close();
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 2da2f6c..24abcc5 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -24,6 +24,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.conf.adapter.IoTDBConfigDynamicAdapter;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.exception.ConfigAdjusterException;
import org.apache.iotdb.db.exception.MetadataErrorException;
import org.apache.iotdb.db.exception.PathErrorException;
@@ -71,7 +72,7 @@ public class MManager {
schemaDir =
IoTDBDescriptor.getInstance().getConfig().getSystemDir() + File.separator + "schema";
- File systemFolder = new File(schemaDir);
+ File systemFolder = SystemFileFactory.INSTANCE.getFile(schemaDir);
if (!systemFolder.exists()) {
if (systemFolder.mkdirs()) {
logger.info("create system folder {}", systemFolder.getAbsolutePath());
@@ -124,7 +125,7 @@ public class MManager {
return;
}
lock.writeLock().lock();
- File logFile = new File(logFilePath);
+ File logFile = SystemFileFactory.INSTANCE.getFile(logFilePath);
try {
initFromLog(logFile);
@@ -232,8 +233,8 @@ public class MManager {
private BufferedWriter getLogWriter() throws IOException {
if (logWriter == null) {
- File logFile = new File(logFilePath);
- File metadataDir = new File(schemaDir);
+ File logFile = SystemFileFactory.INSTANCE.getFile(logFilePath);
+ File metadataDir = SystemFileFactory.INSTANCE.getFile(schemaDir);
if (!metadataDir.exists()) {
if (metadataDir.mkdirs()) {
logger.info("create schema folder {}.", metadataDir);
diff --git a/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java b/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java
index 01d4b52..e6cd84e 100644
--- a/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java
+++ b/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java
@@ -31,6 +31,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.exception.StorageEngineException;
import org.apache.iotdb.db.monitor.IStatistic;
import org.apache.iotdb.db.monitor.MonitorConstants;
@@ -139,7 +140,7 @@ public class FileSize implements IStatistic {
if (kinds.equals(FileSizeConstants.SYS)) {
fileSizes.put(kinds, collectSeqFileSize(fileSizes, kinds));
} else {
- File file = new File(kinds.getPath());
+ File file = SystemFileFactory.INSTANCE.getFile(kinds.getPath());
if (file.exists()) {
try {
fileSizes.put(kinds, FileUtils.sizeOfDirectory(file));
@@ -162,7 +163,7 @@ public class FileSize implements IStatistic {
if (sequenceDir.contains("unsequence")) {
continue;
}
- File settledFile = new File(sequenceDir);
+ File settledFile = SystemFileFactory.INSTANCE.getFile(sequenceDir);
if (settledFile.exists()) {
try {
fileSize += FileUtils.sizeOfDirectory(settledFile);
diff --git a/server/src/main/java/org/apache/iotdb/db/service/Monitor.java b/server/src/main/java/org/apache/iotdb/db/service/Monitor.java
index 8193fd7..578630e 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/Monitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/Monitor.java
@@ -23,6 +23,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.exception.StartupException;
import org.apache.iotdb.db.utils.OpenFileNumUtil;
import org.slf4j.Logger;
@@ -48,7 +49,7 @@ public class Monitor implements MonitorMBean, IService {
try {
long totalSize = 0;
for (String dataDir : config.getDataDirs()) {
- totalSize += FileUtils.sizeOfDirectory(new File(dataDir));
+ totalSize += FileUtils.sizeOfDirectory(SystemFileFactory.INSTANCE.getFile(dataDir));
}
return totalSize;
} catch (Exception e) {
@@ -78,7 +79,7 @@ public class Monitor implements MonitorMBean, IService {
@Override
public String getBaseDirectory() {
try {
- File file = new File(config.getBaseDir());
+ File file = SystemFileFactory.INSTANCE.getFile(config.getBaseDir());
return file.getAbsolutePath();
} catch (Exception e) {
logger.error("meet error while trying to get base dir.", e);
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 05c30a2..a2fa8c6 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
@@ -61,7 +61,6 @@ 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;
@@ -145,7 +144,7 @@ public class SyncServiceImpl implements SyncService.Iface {
fileNodeStartTime.set(new HashMap<>());
fileNodeEndTime.set(new HashMap<>());
try {
- FileUtils.deleteDirectory(FileFactory.INSTANCE.getFile(syncDataPath));
+ FileUtils.deleteDirectory(new File(syncDataPath));
} catch (IOException e) {
logger.error("cannot delete directory {} ", syncFolderPath);
return false;
@@ -153,7 +152,7 @@ public class SyncServiceImpl implements SyncService.Iface {
for (String bufferWritePath : bufferWritePaths) {
bufferWritePath = FilePathUtils.regularizePath(bufferWritePath);
String backupPath = bufferWritePath + SYNC_SERVER + File.separator;
- File backupDirectory = FileFactory.INSTANCE.getFile(backupPath, this.uuid.get());
+ File backupDirectory = new File(backupPath, this.uuid.get());
if (backupDirectory.exists() && backupDirectory.list().length != 0) {
try {
FileUtils.deleteDirectory(backupDirectory);
@@ -202,7 +201,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 = FileFactory.INSTANCE.getFile(schemaFromSenderPath.get());
+ File file = new File(schemaFromSenderPath.get());
if (!file.getParentFile().exists()) {
try {
file.getParentFile().mkdirs();
@@ -229,7 +228,7 @@ public class SyncServiceImpl implements SyncService.Iface {
}
md5OfReceiver = (new BigInteger(1, md.digest())).toString(16);
if (!md5.equals(md5OfReceiver)) {
- FileUtils.forceDelete(FileFactory.INSTANCE.getFile(schemaFromSenderPath.get()));
+ FileUtils.forceDelete(new File(schemaFromSenderPath.get()));
}
} catch (Exception e) {
logger.error("Receiver cannot generate md5 {}", schemaFromSenderPath.get(), e);
@@ -242,7 +241,7 @@ public class SyncServiceImpl implements SyncService.Iface {
* Load metadata from sender
*/
private boolean loadMetadata() {
- if (FileFactory.INSTANCE.getFile(schemaFromSenderPath.get()).exists()) {
+ if (new File(schemaFromSenderPath.get()).exists()) {
try (BufferedReader br = new BufferedReader(
new java.io.FileReader(schemaFromSenderPath.get()))) {
String metadataOperation;
@@ -327,7 +326,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 = FileFactory.INSTANCE.getFile(filePath);
+ File file = new File(filePath);
if (!file.getParentFile().exists()) {
try {
file.getParentFile().mkdirs();
@@ -359,7 +358,7 @@ public class SyncServiceImpl implements SyncService.Iface {
logger.info(String.format("Receiver has received %d files from sender", fileNum.get()));
} else {
- FileUtils.forceDelete(FileFactory.INSTANCE.getFile(filePath));
+ FileUtils.forceDelete(new File(filePath));
}
} catch (Exception e) {
logger.error("Receiver cannot generate md5 {}", filePath, e);
@@ -385,7 +384,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 = FileFactory.INSTANCE.getFile(syncDataPath);
+ File dataFileRoot = new File(syncDataPath);
File[] files = dataFileRoot.listFiles();
int processedNum = 0;
for (File storageGroupPB : files) {
@@ -465,7 +464,7 @@ public class SyncServiceImpl implements SyncService.Iface {
String header = syncDataPath;
String relativePath = path.substring(header.length());
TsFileResource fileNode = new TsFileResource(
- FileFactory.INSTANCE.getFile(DirectoryManager.getInstance().getNextFolderIndexForSequenceFile() +
+ new File(DirectoryManager.getInstance().getNextFolderIndexForSequenceFile() +
File.separator + relativePath), startTimeMap, endTimeMap
);
// call interface of load external file
@@ -714,7 +713,7 @@ public class SyncServiceImpl implements SyncService.Iface {
fileNodeEndTime.remove();
schemaFromSenderPath.remove();
try {
- FileUtils.deleteDirectory(FileFactory.INSTANCE.getFile(syncFolderPath));
+ FileUtils.deleteDirectory(new File(syncFolderPath));
} catch (IOException e) {
logger.error("can not delete directory {}", syncFolderPath, e);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/MemEst/MemEstTool.java b/server/src/main/java/org/apache/iotdb/db/tools/MemEst/MemEstTool.java
index 3f974b1..a5ecf63 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/MemEst/MemEstTool.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/MemEst/MemEstTool.java
@@ -29,11 +29,12 @@ import io.airlift.airline.ParseCommandUnrecognizedException;
import io.airlift.airline.ParseOptionConversionException;
import io.airlift.airline.ParseOptionMissingException;
import io.airlift.airline.ParseOptionMissingValueException;
-import java.io.File;
+
import java.io.IOException;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
public class MemEstTool {
@@ -69,7 +70,7 @@ public class MemEstTool {
err(Throwables.getRootCause(e));
status = 2;
}
- FileUtils.deleteDirectory(new File(IoTDBDescriptor.getInstance().getConfig().getBaseDir()));
+ FileUtils.deleteDirectory(SystemFileFactory.INSTANCE.getFile(IoTDBDescriptor.getInstance().getConfig().getBaseDir()));
System.exit(status);
}
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 8b8de72..f26268b 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
@@ -26,7 +26,7 @@ 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;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
/**
* this tool can analyze the tsfile.resource files from a folder.
@@ -39,7 +39,7 @@ public class TsFileResourcePrinter {
if (args.length >= 1) {
folder = args[0];
}
- File folderFile = FileFactory.INSTANCE.getFile(folder);
+ File folderFile = SystemFileFactory.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])));
@@ -51,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(FileFactory.INSTANCE.getFile(filename));
+ TsFileResource resource = new TsFileResource(SystemFileFactory.INSTANCE.getFile(filename));
System.err.println(String.format("analyzing %s ...", filename));
resource.deSerialize();
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/WalChecker.java b/server/src/main/java/org/apache/iotdb/db/tools/WalChecker.java
index d390403..9df9882 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/WalChecker.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/WalChecker.java
@@ -25,6 +25,8 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.exception.SysCheckException;
import org.apache.iotdb.db.writelog.io.SingleFileLogReader;
import org.slf4j.Logger;
@@ -52,7 +54,7 @@ public class WalChecker {
* @throws SysCheckException if the root wal dir does not exist.
*/
public List<File> doCheck() throws SysCheckException {
- File walFolderFile = new File(walFolder);
+ File walFolderFile = SystemFileFactory.INSTANCE.getFile(walFolder);
logger.info("Checking folder: {}", walFolderFile.getAbsolutePath());
if(!walFolderFile.exists() || !walFolderFile.isDirectory()) {
throw new SysCheckException(String.format("%s is not a directory", walFolder));
@@ -68,7 +70,7 @@ public class WalChecker {
for (int dirIndex = 0; dirIndex < storageWalFolders.length; dirIndex++) {
File storageWalFolder = storageWalFolders[dirIndex];
logger.info("Checking the No.{} directory {}", dirIndex, storageWalFolder.getName());
- File walFile = new File(storageWalFolder, WAL_FILE_NAME);
+ File walFile = SystemFileFactory.INSTANCE.getFile(storageWalFolder, WAL_FILE_NAME);
if (!checkFile(walFile)) {
failedFiles.add(walFile);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/io/LogWriter.java b/server/src/main/java/org/apache/iotdb/db/writelog/io/LogWriter.java
index a93cda1..40c923b 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/io/LogWriter.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/io/LogWriter.java
@@ -26,6 +26,7 @@ import java.nio.channels.FileChannel;
import java.util.zip.CRC32;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
/**
* LogWriter writes the binarized logs into a file using FileChannel together with check sums of
@@ -42,7 +43,7 @@ public class LogWriter implements ILogWriter {
private ByteBuffer checkSumBuffer = ByteBuffer.allocate(8);
public LogWriter(String logFilePath) {
- logFile = new File(logFilePath);
+ logFile = SystemFileFactory.INSTANCE.getFile(logFilePath);
}
public LogWriter(File logFile) {
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/node/ExclusiveWriteLogNode.java b/server/src/main/java/org/apache/iotdb/db/writelog/node/ExclusiveWriteLogNode.java
index 3ff3fa7..836eea8 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/node/ExclusiveWriteLogNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/node/ExclusiveWriteLogNode.java
@@ -26,7 +26,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.conf.directories.DirectoryManager;
-import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.qp.physical.PhysicalPlan;
import org.apache.iotdb.db.writelog.io.ILogReader;
import org.apache.iotdb.db.writelog.io.ILogWriter;
@@ -70,7 +70,7 @@ public class ExclusiveWriteLogNode implements WriteLogNode, Comparable<Exclusive
this.identifier = identifier;
this.logDirectory =
DirectoryManager.getInstance().getWALFolder() + File.separator + this.identifier;
- if (new File(logDirectory).mkdirs()) {
+ if (SystemFileFactory.INSTANCE.getFile(logDirectory).mkdirs()) {
logger.info("create the WAL folder {}." + logDirectory);
}
}
@@ -143,7 +143,7 @@ public class ExclusiveWriteLogNode implements WriteLogNode, Comparable<Exclusive
public void notifyEndFlush() {
lock.writeLock().lock();
try {
- File logFile = new File(logDirectory, WAL_FILE_NAME + ++lastFlushedId);
+ File logFile = SystemFileFactory.INSTANCE.getFile(logDirectory, WAL_FILE_NAME + ++lastFlushedId);
discard(logFile);
} finally {
lock.writeLock().unlock();
@@ -166,7 +166,7 @@ public class ExclusiveWriteLogNode implements WriteLogNode, Comparable<Exclusive
try {
logBuffer.clear();
close();
- FileUtils.deleteDirectory(new File(logDirectory));
+ FileUtils.deleteDirectory(SystemFileFactory.INSTANCE.getFile(logDirectory));
} finally {
lock.writeLock().unlock();
}
@@ -174,7 +174,7 @@ public class ExclusiveWriteLogNode implements WriteLogNode, Comparable<Exclusive
@Override
public ILogReader getLogReader() {
- File[] logFiles = new File(logDirectory).listFiles();
+ File[] logFiles = SystemFileFactory.INSTANCE.getFile(logDirectory).listFiles();
Arrays.sort(logFiles,
Comparator.comparingInt(f -> Integer.parseInt(f.getName().replace(WAL_FILE_NAME, ""))));
return new MultiFileLogReader(logFiles);
@@ -238,7 +238,7 @@ public class ExclusiveWriteLogNode implements WriteLogNode, Comparable<Exclusive
private void nextFileWriter() {
fileId++;
- File newFile = new File(logDirectory, WAL_FILE_NAME + fileId);
+ File newFile = SystemFileFactory.INSTANCE.getFile(logDirectory, WAL_FILE_NAME + fileId);
if (newFile.getParentFile().mkdirs()) {
logger.info("create WAL parent folder {}.", newFile.getParent());
}
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 42c5b58..164d058 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -19,11 +19,12 @@
package org.apache.iotdb.db.writelog.recover;
-import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
+import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.memtable.IMemTable;
import org.apache.iotdb.db.engine.modification.Deletion;
import org.apache.iotdb.db.engine.modification.ModificationFile;
@@ -84,7 +85,7 @@ public class LogReplayer {
*/
public void replayLogs() throws ProcessorException {
WriteLogNode logNode = MultiFileLogNodeManager.getInstance().getNode(
- logNodePrefix + new File(insertFilePath).getName());
+ logNodePrefix + SystemFileFactory.INSTANCE.getFile(insertFilePath).getName());
ILogReader logReader = logNode.getLogReader();
try {
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 2fa3ec1..9052f7e 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,7 +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.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.fileSystem.TSFileFactory;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.write.schema.Schema;
@@ -143,7 +143,7 @@ public class TsFileRecoverPerformer {
// clean logs
try {
MultiFileLogNodeManager.getInstance()
- .deleteNode(logNodePrefix + FileFactory.INSTANCE.getFile(insertFilePath).getName());
+ .deleteNode(logNodePrefix + SystemFileFactory.INSTANCE.getFile(insertFilePath).getName());
} catch (IOException e) {
throw new ProcessorException(e);
}
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 853ceaf..59dad16 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,7 +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.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.write.TsFileWriter;
import org.apache.iotdb.tsfile.write.record.TSRecord;
import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
@@ -115,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 = FileFactory.INSTANCE.getFile(i + "seq.tsfile");
+ File file = SystemFileFactory.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 = FileFactory.INSTANCE.getFile(i + "unseq.tsfile");
+ File file = SystemFileFactory.INSTANCE.getFile(i + "unseq.tsfile");
TsFileResource tsFileResource = new TsFileResource(file);
unseqResources.add(tsFileResource);
prepareFile(tsFileResource, i * ptNum, ptNum * (i + 1) / unseqFileNum, 10000);
}
- File file = FileFactory.INSTANCE.getFile(unseqFileNum + "unseq.tsfile");
+ File file = SystemFileFactory.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 407dd94..ff53332 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
@@ -41,7 +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.db.engine.fileSystem.SystemFileFactory;
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, FileFactory.INSTANCE.getFile(filePath),
+ processor = new TsFileProcessor(storageGroup, SystemFileFactory.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, FileFactory.INSTANCE.getFile(filePath),
+ processor = new TsFileProcessor(storageGroup, SystemFileFactory.INSTANCE.getFile(filePath),
SchemaUtils.constructSchema(deviceId), SysTimeVersionController.INSTANCE, x -> {
},
() -> true, true);
@@ -168,7 +168,7 @@ public class TsFileProcessorTest {
RestorableTsFileIOWriter tsFileIOWriter = processor.getWriter();
List<ChunkGroupMetaData> chunkGroupMetaDataList = tsFileIOWriter.getChunkGroupMetaDatas();
RestorableTsFileIOWriter restorableTsFileIOWriter = new RestorableTsFileIOWriter(
- FileFactory.INSTANCE.getFile(filePath));
+ SystemFileFactory.INSTANCE.getFile(filePath));
List<ChunkGroupMetaData> 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, FileFactory.INSTANCE.getFile(filePath),
+ processor = new TsFileProcessor(storageGroup, SystemFileFactory.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, FileFactory.INSTANCE.getFile(filePath),
+ processor = new TsFileProcessor(storageGroup, SystemFileFactory.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 0545df1..c810772 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
@@ -26,7 +26,7 @@ import java.io.IOException;
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.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -61,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 = FileFactory.INSTANCE.getFile(filePath + i);
+ File file = SystemFileFactory.INSTANCE.getFile(filePath + i);
file.createNewFile();
tsFileResources[i] = new TsFileResource(file);
}
@@ -116,7 +116,7 @@ public class FileReaderManagerTest {
t2.join();
for (int i = 1; i <= MAX_FILE_SIZE; i++) {
- TsFileResource tsFile = new TsFileResource(FileFactory.INSTANCE.getFile(filePath + i));
+ TsFileResource tsFile = new TsFileResource(SystemFileFactory.INSTANCE.getFile(filePath + i));
Assert.assertTrue(manager.contains(tsFile, false));
}
@@ -136,7 +136,7 @@ public class FileReaderManagerTest {
FileReaderManager.getInstance().closeAndRemoveAllOpenedReaders();
for (int i = 1; i < MAX_FILE_SIZE; i++) {
- File file = FileFactory.INSTANCE.getFile(filePath + i);
+ File file = SystemFileFactory.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 12bfbbc..dd46409 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,7 +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.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.write.schema.Schema;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
@@ -54,8 +54,8 @@ public class LogReplayerTest {
@Test
public void test() throws IOException, ProcessorException {
String logNodePrefix = "testLogNode";
- File tsFile = FileFactory.INSTANCE.getFile("temp", "test.ts");
- File modF = FileFactory.INSTANCE.getFile("test.mod");
+ File tsFile = SystemFileFactory.INSTANCE.getFile("temp", "test.ts");
+ File modF = SystemFileFactory.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 67b0e2b..113e24d 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,7 +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.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.read.ReadOnlyTsFile;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.Field;
@@ -77,7 +77,7 @@ public class SeqTsFileRecoverTest {
@Before
public void setup() throws IOException, WriteProcessException {
- tsF = FileFactory.INSTANCE.getFile("temp", "test.ts");
+ tsF = SystemFileFactory.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 924081f..1358582 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,7 +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.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.Chunk;
import org.apache.iotdb.tsfile.read.common.Path;
@@ -80,7 +80,7 @@ public class UnseqTsFileRecoverTest {
@Before
public void setup() throws IOException, WriteProcessException {
- tsF = FileFactory.INSTANCE.getFile("temp", "test.ts");
+ tsF = SystemFileFactory.INSTANCE.getFile("temp", "test.ts");
tsF.getParentFile().mkdirs();
schema = new Schema();