From 8e94976cddfef2ff774c805ace9973cf38ea1b92 Mon Sep 17 00:00:00 2001 From: tjq Date: Sun, 22 Jan 2023 17:50:29 +0800 Subject: [PATCH] feat: allowed user to customize the storage path of the h2 database #521 --- .../tech/powerjob/common/PowerJobDKey.java | 2 ++ .../impl/script/AbstractScriptProcessor.java | 3 +- .../worker/common/utils/PowerFileUtils.java | 30 +++++++++++++++++++ .../worker/container/OmsContainerFactory.java | 5 ++-- .../worker/persistence/ConnectionFactory.java | 3 +- 5 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 powerjob-worker/src/main/java/tech/powerjob/worker/common/utils/PowerFileUtils.java diff --git a/powerjob-common/src/main/java/tech/powerjob/common/PowerJobDKey.java b/powerjob-common/src/main/java/tech/powerjob/common/PowerJobDKey.java index 45485189..aa27ea48 100644 --- a/powerjob-common/src/main/java/tech/powerjob/common/PowerJobDKey.java +++ b/powerjob-common/src/main/java/tech/powerjob/common/PowerJobDKey.java @@ -41,6 +41,8 @@ public class PowerJobDKey { * It's VERY dangerous */ public static final String WORKER_ALLOWED_FORCE_STOP_THREAD = "powerjob.worker.allowed-force-stop-thread"; + + public static final String WORKER_WORK_SPACE = "powerjob.worker.workspace"; /** * ms */ diff --git a/powerjob-official-processors/src/main/java/tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java b/powerjob-official-processors/src/main/java/tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java index 935df2ca..768160e2 100644 --- a/powerjob-official-processors/src/main/java/tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java +++ b/powerjob-official-processors/src/main/java/tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java @@ -1,5 +1,6 @@ package tech.powerjob.official.processors.impl.script; +import tech.powerjob.worker.common.utils.PowerFileUtils; import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.log.OmsLogger; @@ -34,7 +35,7 @@ public abstract class AbstractScriptProcessor extends CommonBasicProcessor { protected static final String SH_SHELL = "/bin/sh"; protected static final String CMD_SHELL = "cmd.exe"; - private static final String WORKER_DIR = System.getProperty("user.home") + "/powerjob/worker/official_script_processor/"; + private static final String WORKER_DIR = PowerFileUtils.workspace() + "/official_script_processor/"; @Override protected ProcessResult process0(TaskContext context) throws Exception { diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/common/utils/PowerFileUtils.java b/powerjob-worker/src/main/java/tech/powerjob/worker/common/utils/PowerFileUtils.java new file mode 100644 index 00000000..1d0331ce --- /dev/null +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/common/utils/PowerFileUtils.java @@ -0,0 +1,30 @@ +package tech.powerjob.worker.common.utils; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import tech.powerjob.common.PowerJobDKey; + +/** + * 文件工具 + * + * @author tjq + * @since 2023/1/22 + */ +@Slf4j +public class PowerFileUtils { + + /** + * 获取工作目录 + * @return 允许用户通过启动配置文件自定义存储目录,默认为 user.home + */ + public static String workspace() { + String workspaceByDKey = System.getProperty(PowerJobDKey.WORKER_WORK_SPACE); + if (StringUtils.isNotEmpty(workspaceByDKey)) { + log.info("[PowerFileUtils] [workspace] use custom workspace: {}", workspaceByDKey); + return workspaceByDKey; + } + final String userHome = System.getProperty("user.home").concat("/powerjob/worker"); + log.info("[PowerFileUtils] [workspace] use user.home as workspace: {}", userHome); + return userHome; + } +} diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/container/OmsContainerFactory.java b/powerjob-worker/src/main/java/tech/powerjob/worker/container/OmsContainerFactory.java index 2834b13b..f857e43c 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/container/OmsContainerFactory.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/container/OmsContainerFactory.java @@ -10,6 +10,7 @@ import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import tech.powerjob.worker.common.WorkerRuntime; +import tech.powerjob.worker.common.utils.PowerFileUtils; import tech.powerjob.worker.common.utils.TransportUtils; import java.io.File; @@ -26,13 +27,13 @@ import java.util.Map; @Slf4j public class OmsContainerFactory { - private static final String CONTAINER_DIR = System.getProperty("user.home") + "/powerjob/worker/container/"; + private static final String CONTAINER_DIR = PowerFileUtils.workspace() + "/container/"; private static final Map CARGO = Maps.newConcurrentMap(); /** * 获取容器 * @param containerId 容器ID - * @param serverActor 当容器不存在且 serverActor 非空时,尝试从服务端重新拉取容器 + * @param workerRuntime 当容器不存在且 serverActor 非空时,尝试从服务端重新拉取容器 * @return 容器示例,可能为 null */ public static OmsContainer fetchContainer(Long containerId, WorkerRuntime workerRuntime) { diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/ConnectionFactory.java b/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/ConnectionFactory.java index 60013e7e..dfbe2cd0 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/ConnectionFactory.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/persistence/ConnectionFactory.java @@ -8,6 +8,7 @@ import com.zaxxer.hikari.HikariDataSource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.h2.Driver; +import tech.powerjob.worker.common.utils.PowerFileUtils; import javax.sql.DataSource; import java.io.File; @@ -25,7 +26,7 @@ public class ConnectionFactory { private volatile DataSource dataSource; - private final String H2_PATH = System.getProperty("user.home") + "/powerjob/worker/h2/" + CommonUtils.genUUID() + "/"; + private final String H2_PATH = PowerFileUtils.workspace() + "/h2/" + CommonUtils.genUUID() + "/"; private final String DISK_JDBC_URL = String.format("jdbc:h2:file:%spowerjob_worker_db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false", H2_PATH); private final String MEMORY_JDBC_URL = String.format("jdbc:h2:mem:%spowerjob_worker_db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false", H2_PATH);