This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 2021d5aacc2 Get canonical path when using IOTDB_DATA_HOME and
IOTDB_HOME (#10035)
2021d5aacc2 is described below
commit 2021d5aacc271bd57f31633c689f2a9455501f52
Author: Alan Choo <[email protected]>
AuthorDate: Fri Jun 2 20:35:55 2023 +0800
Get canonical path when using IOTDB_DATA_HOME and IOTDB_HOME (#10035)
---
.../apache/iotdb/commons/conf/CommonConfig.java | 31 +++++++++++-----------
.../org/apache/iotdb/commons/utils/FileUtils.java | 12 +++++++++
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 21 ++++++++-------
3 files changed, 39 insertions(+), 25 deletions(-)
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
b/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index 5c7c91545ee..4f70504681e 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -22,12 +22,14 @@ import org.apache.iotdb.common.rpc.thrift.TEndPoint;
import
org.apache.iotdb.commons.client.property.ClientPoolProperty.DefaultProperty;
import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.commons.enums.HandleSystemErrorStrategy;
+import org.apache.iotdb.commons.utils.FileUtils;
import org.apache.iotdb.tsfile.fileSystem.FSType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class CommonConfig {
@@ -163,24 +165,23 @@ public class CommonConfig {
CommonConfig() {}
public void updatePath(String homeDir) {
- userFolder = addHomeDir(userFolder, homeDir);
- roleFolder = addHomeDir(roleFolder, homeDir);
- procedureWalFolder = addHomeDir(procedureWalFolder, homeDir);
- syncDir = addHomeDir(syncDir, homeDir);
- for (int i = 0; i < walDirs.length; i++) {
- walDirs[i] = addHomeDir(walDirs[i], homeDir);
+ if (homeDir == null) {
+ return;
}
- }
- private String addHomeDir(String dir, String homeDir) {
- if (!new File(dir).isAbsolute() && homeDir != null && homeDir.length() >
0) {
- if (!homeDir.endsWith(File.separator)) {
- dir = homeDir + File.separatorChar + dir;
- } else {
- dir = homeDir + dir;
- }
+ File homeFile = new File(homeDir);
+ try {
+ homeDir = homeFile.getCanonicalPath();
+ } catch (IOException e) {
+ logger.error("Fail to get canonical path of {}", homeFile, e);
+ }
+ userFolder = FileUtils.addPrefix2FilePath(homeDir, userFolder);
+ roleFolder = FileUtils.addPrefix2FilePath(homeDir, roleFolder);
+ procedureWalFolder = FileUtils.addPrefix2FilePath(homeDir,
procedureWalFolder);
+ syncDir = FileUtils.addPrefix2FilePath(homeDir, syncDir);
+ for (int i = 0; i < walDirs.length; i++) {
+ walDirs[i] = FileUtils.addPrefix2FilePath(homeDir, walDirs[i]);
}
- return dir;
}
public String getEncryptDecryptProvider() {
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/utils/FileUtils.java
b/node-commons/src/main/java/org/apache/iotdb/commons/utils/FileUtils.java
index 6a5e3e0f6cd..98ef533b358 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/utils/FileUtils.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/utils/FileUtils.java
@@ -153,4 +153,16 @@ public class FileUtils {
org.apache.commons.io.FileUtils.delete(file);
}
}
+
+ /** Add a prefix to a relative path file */
+ public static String addPrefix2FilePath(String prefix, String file) {
+ if (!new File(file).isAbsolute() && prefix != null && prefix.length() > 0)
{
+ if (!prefix.endsWith(File.separator)) {
+ file = prefix + File.separatorChar + file;
+ } else {
+ file = prefix + file;
+ }
+ }
+ return file;
+ }
}
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 cdd894b5d47..816916ac7b1 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
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.conf;
import org.apache.iotdb.common.rpc.thrift.TEndPoint;
import
org.apache.iotdb.commons.client.property.ClientPoolProperty.DefaultProperty;
import org.apache.iotdb.commons.conf.IoTDBConstant;
+import org.apache.iotdb.commons.utils.FileUtils;
import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.consensus.ConsensusFactory;
import org.apache.iotdb.db.audit.AuditLogOperation;
@@ -51,6 +52,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.io.IOException;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collections;
@@ -1317,18 +1319,17 @@ public class IoTDBConfig {
if (dataHomeDir == null) {
dataHomeDir = System.getProperty(IoTDBConstant.IOTDB_HOME, null);
}
- return addDirPrefix(dataHomeDir, dir);
- }
+ if (dataHomeDir == null) {
+ return dir;
+ }
- private String addDirPrefix(String prefix, String dir) {
- if (!new File(dir).isAbsolute() && prefix != null && prefix.length() > 0) {
- if (!prefix.endsWith(File.separator)) {
- dir = prefix + File.separatorChar + dir;
- } else {
- dir = prefix + dir;
- }
+ File dataHomeFile = new File(dataHomeDir);
+ try {
+ dataHomeDir = dataHomeFile.getCanonicalPath();
+ } catch (IOException e) {
+ logger.error("Fail to get canonical path of {}", dataHomeFile, e);
}
- return dir;
+ return FileUtils.addPrefix2FilePath(dataHomeDir, dir);
}
void confirmMultiDirStrategy() {