You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by lt...@apache.org on 2020/01/08 07:48:19 UTC
[incubator-iotdb] 01/02: change lock file path and uuid file path
to system folder
This is an automated email from the ASF dual-hosted git repository.
lta pushed a commit to branch sync_minor_fix
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 94f34c2a8d229b98765acab94ba9de63da3929bb
Author: lta <li...@163.com>
AuthorDate: Wed Jan 8 15:30:52 2020 +0800
change lock file path and uuid file path to system folder
---
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 14 +++++
.../org/apache/iotdb/db/conf/IoTDBConstant.java | 6 ++
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 8 ++-
.../iotdb/db/sync/conf/SyncSenderConfig.java | 18 ------
.../iotdb/db/sync/sender/transfer/SyncClient.java | 64 ++++++++++++----------
5 files changed, 59 insertions(+), 51 deletions(-)
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 f3a4fce..642898a 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
@@ -128,6 +128,11 @@ public class IoTDBConfig {
private String schemaDir = "data/system/schema";
/**
+ * Sync directory, including the lock file and uuid file
+ */
+ private String syncDir = "data/system/sync";
+
+ /**
* Query directory, stores temporary files of query
*/
private String queryDir = "data/query";
@@ -479,6 +484,7 @@ public class IoTDBConfig {
baseDir = addHomeDir(baseDir);
systemDir = addHomeDir(systemDir);
schemaDir = addHomeDir(schemaDir);
+ syncDir = addHomeDir(syncDir);
walFolder = addHomeDir(walFolder);
if (TSFileDescriptor.getInstance().getConfig().getTSFileStorageFs().equals(FSType.HDFS)) {
@@ -626,6 +632,14 @@ public class IoTDBConfig {
this.schemaDir = schemaDir;
}
+ public String getSyncDir() {
+ return syncDir;
+ }
+
+ public void setSyncDir(String syncDir) {
+ this.syncDir = syncDir;
+ }
+
public String getQueryDir() {
return queryDir;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
index 7bf9f64..8fe49c0 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConstant.java
@@ -74,4 +74,10 @@ public class IoTDBConstant {
public static final int MEMTABLE_NUM_IN_EACH_STORAGE_GROUP = 4;
+ // system folder name
+ public static final String SYSTEM_FOLDER_NAME = "system";
+ public static final String SCHEMA_FOLDER_NAME = "schema";
+ public static final String SYNC_FOLDER_NAME = "sync";
+ public static final String QUERY_FOLDER_NAME = "query";
+
}
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 9b684dc..896b495 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
@@ -140,11 +140,13 @@ public class IoTDBDescriptor {
conf.setBaseDir(properties.getProperty("base_dir", conf.getBaseDir()));
- conf.setSystemDir(FilePathUtils.regularizePath(conf.getBaseDir()) + "system");
+ conf.setSystemDir(FilePathUtils.regularizePath(conf.getBaseDir()) + IoTDBConstant.SYSTEM_FOLDER_NAME);
- conf.setSchemaDir(FilePathUtils.regularizePath(conf.getSystemDir()) + "schema");
+ conf.setSchemaDir(FilePathUtils.regularizePath(conf.getSystemDir()) + IoTDBConstant.SCHEMA_FOLDER_NAME);
- conf.setQueryDir(FilePathUtils.regularizePath(conf.getBaseDir()) + "query");
+ conf.setSyncDir(FilePathUtils.regularizePath(conf.getSystemDir()) + IoTDBConstant.SYNC_FOLDER_NAME);
+
+ conf.setQueryDir(FilePathUtils.regularizePath(conf.getBaseDir()) + IoTDBConstant.QUERY_FOLDER_NAME);
conf.setDataDirs(properties.getProperty("data_dirs", conf.getDataDirs()[0])
.split(","));
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/conf/SyncSenderConfig.java b/server/src/main/java/org/apache/iotdb/db/sync/conf/SyncSenderConfig.java
index e3ed539..e7d9466 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/conf/SyncSenderConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/conf/SyncSenderConfig.java
@@ -32,10 +32,6 @@ public class SyncSenderConfig {
private String senderFolderPath;
- private String lockFilePath;
-
- private String uuidPath;
-
private String lastFileInfoPath;
private String snapshotPath;
@@ -57,8 +53,6 @@ public class SyncSenderConfig {
senderFolderPath =
dataDirectory + File.separatorChar + SyncConstant.SYNC_SENDER + File.separatorChar +
getSyncReceiverName();
- lockFilePath = senderFolderPath + File.separatorChar + SyncConstant.LOCK_FILE_NAME;
- uuidPath = senderFolderPath + File.separatorChar + SyncConstant.UUID_FILE_NAME;
lastFileInfoPath = senderFolderPath + File.separatorChar + SyncConstant.LAST_LOCAL_FILE_NAME;
snapshotPath = senderFolderPath + File.separatorChar + SyncConstant.DATA_SNAPSHOT_NAME;
if (!new File(snapshotPath).exists()) {
@@ -98,14 +92,6 @@ public class SyncSenderConfig {
this.senderFolderPath = senderFolderPath;
}
- public String getLockFilePath() {
- return lockFilePath;
- }
-
- public void setLockFilePath(String lockFilePath) {
- this.lockFilePath = lockFilePath;
- }
-
public String getLastFileInfoPath() {
return lastFileInfoPath;
}
@@ -122,10 +108,6 @@ public class SyncSenderConfig {
this.snapshotPath = snapshotPath;
}
- public String getUuidPath() {
- return uuidPath;
- }
-
public String getSyncReceiverName() {
return serverIp + SyncConstant.SYNC_DIR_NAME_SEPARATOR + serverPort;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java b/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java
index 692509a..11c5535 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/sender/transfer/SyncClient.java
@@ -64,8 +64,8 @@ import org.apache.iotdb.db.sync.sender.recover.ISyncSenderLogger;
import org.apache.iotdb.db.sync.sender.recover.SyncSenderLogAnalyzer;
import org.apache.iotdb.db.sync.sender.recover.SyncSenderLogger;
import org.apache.iotdb.db.utils.SyncUtils;
-import org.apache.iotdb.service.sync.thrift.SyncStatus;
import org.apache.iotdb.service.sync.thrift.SyncService;
+import org.apache.iotdb.service.sync.thrift.SyncStatus;
import org.apache.iotdb.tsfile.utils.BytesUtils;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
@@ -139,32 +139,27 @@ public class SyncClient implements ISyncClient {
@Override
public void verifySingleton() throws IOException {
- String[] dataDirs = IoTDBDescriptor.getInstance().getConfig().getDataDirs();
- for (String dataDir : dataDirs) {
- config.update(dataDir);
- File lockFile = new File(config.getLockFilePath());
- if (!lockFile.getParentFile().exists()) {
- lockFile.getParentFile().mkdirs();
- }
- if (!lockFile.exists()) {
- lockFile.createNewFile();
- }
- if (!lockInstance(config.getLockFilePath())) {
- logger.error("Sync client is already running.");
- System.exit(1);
- }
+ File lockFile = getLockFile();
+ if (!lockFile.getParentFile().exists()) {
+ lockFile.getParentFile().mkdirs();
+ }
+ if (!lockFile.exists()) {
+ lockFile.createNewFile();
+ }
+ if (!lockInstance(lockFile)) {
+ logger.error("Sync client is already running.");
+ System.exit(1);
}
}
/**
- * Try to lock lockfile. if failed, it means that sync client has benn started.
+ * Try to lock lockfile. if failed, it means that sync client has been started.
*
- * @param lockFile path of lock file
+ * @param lockFile lock file
*/
- private boolean lockInstance(final String lockFile) {
+ private boolean lockInstance(File lockFile) {
try {
- final File file = new File(lockFile);
- final RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
+ final RandomAccessFile randomAccessFile = new RandomAccessFile(lockFile, "rw");
final FileLock fileLock = randomAccessFile.getChannel().tryLock();
if (fileLock != null) {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
@@ -288,7 +283,7 @@ public class SyncClient implements ISyncClient {
public void confirmIdentity() throws SyncConnectionException {
try (Socket socket = new Socket(config.getServerIp(), config.getServerPort())){
SyncStatus status = serviceClient
- .check(socket.getLocalAddress().getHostAddress(), getOrCreateUUID(config.getUuidPath()));
+ .check(socket.getLocalAddress().getHostAddress(), getOrCreateUUID(getUuidFile()));
if (status.code != SUCCESS_CODE) {
throw new SyncConnectionException(
"The receiver rejected the synchronization task because " + status.msg);
@@ -302,25 +297,24 @@ public class SyncClient implements ISyncClient {
/**
* UUID marks the identity of sender for receiver.
*/
- private String getOrCreateUUID(String uuidPath) throws IOException {
- File file = new File(uuidPath);
+ private String getOrCreateUUID(File uuidFile) throws IOException {
String uuid;
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
+ if (!uuidFile.getParentFile().exists()) {
+ uuidFile.getParentFile().mkdirs();
}
- if (!file.exists()) {
- try (FileOutputStream out = new FileOutputStream(file)) {
+ if (!uuidFile.exists()) {
+ try (FileOutputStream out = new FileOutputStream(uuidFile)) {
uuid = generateUUID();
out.write(uuid.getBytes());
} catch (IOException e) {
- logger.error("Cannot insert UUID to file {}", file.getPath());
+ logger.error("Cannot insert UUID to file {}", uuidFile.getPath());
throw new IOException(e);
}
} else {
- try (BufferedReader bf = new BufferedReader((new FileReader(uuidPath)))) {
+ try (BufferedReader bf = new BufferedReader((new FileReader(uuidFile.getAbsolutePath())))) {
uuid = bf.readLine();
} catch (IOException e) {
- logger.error("Cannot read UUID from file{}", file.getPath());
+ logger.error("Cannot read UUID from file{}", uuidFile.getPath());
throw new IOException(e);
}
}
@@ -656,6 +650,16 @@ public class SyncClient implements ISyncClient {
MetadataConstant.METADATA_LOG);
}
+ private File getLockFile() {
+ return new File(IoTDBDescriptor.getInstance().getConfig().getSyncDir(),
+ SyncConstant.LOCK_FILE_NAME);
+ }
+
+ private File getUuidFile() {
+ return new File(IoTDBDescriptor.getInstance().getConfig().getSyncDir(),
+ SyncConstant.UUID_FILE_NAME);
+ }
+
private static class InstanceHolder {
private static final SyncClient INSTANCE = new SyncClient();