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/07/08 02:35:27 UTC

[incubator-iotdb] branch master updated: add IOTDB_HOME prefix to dir (#220)

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 0fbda87  add IOTDB_HOME prefix to dir (#220)
0fbda87 is described below

commit 0fbda875a2096a068989c95cfbc45f96b31f087f
Author: Jialin Qiao <qj...@mails.tsinghua.edu.cn>
AuthorDate: Mon Jul 8 10:35:23 2019 +0800

    add IOTDB_HOME prefix to dir (#220)
    
    * add IOTDB_HOME prefix to dir
---
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 39 ++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 82dab68..e7543b0 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -18,7 +18,11 @@
  */
 package org.apache.iotdb.db.conf;
 
+import java.io.File;
 import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.service.TSServiceImpl;
 import org.slf4j.Logger;
@@ -185,9 +189,44 @@ public class IoTDBConfig {
   }
 
   void updatePath() {
+    formulateFolders();
     confirmMultiDirStrategy();
   }
 
+
+  /**
+   * if the folders are relative paths, add IOTDB_HOME as the path prefix
+   */
+  private void formulateFolders() {
+    List<String> dirs = new ArrayList<>();
+    dirs.add(baseDir);
+    dirs.add(systemDir);
+    dirs.add(walFolder);
+    dirs.add(indexFileDir);
+    dirs.addAll(Arrays.asList(dataDirs));
+
+    String homeDir = System.getProperty(IoTDBConstant.IOTDB_HOME, null);
+    for (int i = 0; i < dirs.size(); i++) {
+      String dir = dirs.get(i);
+      if (!new File(dir).isAbsolute() && homeDir != null && homeDir.length() > 0) {
+        if (!homeDir.endsWith(File.separator)) {
+          dir = homeDir + File.separatorChar + dir;
+        } else {
+          dir = homeDir + dir;
+        }
+        dirs.set(i, dir);
+      }
+    }
+    baseDir = dirs.get(0);
+    systemDir = dirs.get(1);
+    walFolder = dirs.get(2);
+    indexFileDir = dirs.get(3);
+    for (int i = 0; i < dataDirs.length; i++) {
+      dataDirs[i] = dirs.get(i + 4);
+    }
+  }
+
+
   private void confirmMultiDirStrategy() {
     if (getMultiDirStrategyClassName() == null) {
       multiDirStrategyClassName = DEFAULT_MULTI_DIR_STRATEGY;