summaryrefslogtreecommitdiff
path: root/groot-bootstrap
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2023-12-22 09:59:44 +0800
committerdoufenghu <[email protected]>2023-12-22 09:59:44 +0800
commit2257feeee39e71d5dade02e7e4d47ca144f75bad (patch)
tree3716a3bcfe6cc1144f52a6526bd5bd1ab4f8220e /groot-bootstrap
parent24e4df2fb59645879be600eb4ca99656c577f2c9 (diff)
[Improve][Config]优化配置加载方式。在命令行启动时,通过增加默认参数的方式加载全局配置文件和UDF配置。
Diffstat (limited to 'groot-bootstrap')
-rwxr-xr-xgroot-bootstrap/src/main/bin/start.sh27
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/CommandArgs.java2
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommand.java15
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommandArgs.java27
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobRuntimeEnvironment.java2
-rw-r--r--groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/main/GrootStreamRunner.java3
6 files changed, 54 insertions, 22 deletions
diff --git a/groot-bootstrap/src/main/bin/start.sh b/groot-bootstrap/src/main/bin/start.sh
index bdc1a5e..b46703e 100755
--- a/groot-bootstrap/src/main/bin/start.sh
+++ b/groot-bootstrap/src/main/bin/start.sh
@@ -18,6 +18,7 @@ while [ -h "$PRG" ] ; do
done
PRG_DIR=`dirname "$PRG"`
+# shellcheck disable=SC2006
APP_DIR=`cd "$PRG_DIR/.." >/dev/null; pwd`
CONF_DIR=${APP_DIR}/config
APP_JAR=${APP_DIR}/bootstrap/groot-bootstrap.jar
@@ -35,17 +36,35 @@ else
fi
set +u
+
+if [ -z $HAZELCAST_CONFIG ]; then
+ HAZELCAST_CONFIG=${CONF_DIR}/hazelcast.yaml
+fi
+
+if [ -z $GROOTSTREAM_CONFIG ]; then
+ GROOTSTREAM_CONFIG=${CONF_DIR}/grootstream.yaml
+fi
+
+if [ -z $UDF_CONFIG ]; then
+ UDF_CONFIG=${CONF_DIR}/udf.plugins
+fi
+
+args="${args:-} -i grootstream.config=${GROOTSTREAM_CONFIG}"
+args="${args:-} -i hazelcast.config=${HAZELCAST_CONFIG}"
+args="${args:-} -i udf.config=${UDF_CONFIG}"
+
# Log4j2 Config
if [ -e "${CONF_DIR}/log4j2.properties" ]; then
- JAVA_OPTS="${JAVA_OPTS} -Dlog4j2.configurationFile=${CONF_DIR}/log4j2.properties"
- JAVA_OPTS="${JAVA_OPTS} -Dgrootstream.logs.path=${APP_DIR}/logs"
- JAVA_OPTS="${JAVA_OPTS} -Dgrootstream.logs.file_name=groot-stream-runner"
+ JAVA_OPTS="${JAVA_OPTS:-} -Dlog4j2.configurationFile=${CONF_DIR}/log4j2.properties"
+ JAVA_OPTS="${JAVA_OPTS:-} -Dgrootstream.logs.path=${APP_DIR}/logs"
+ JAVA_OPTS="${JAVA_OPTS:-} -Dgrootstream.logs.file_name=groot-stream-runner"
fi
-echo ${JAVA_OPTS}
+
CLASS_PATH=${APP_DIR}/bootstrap/logging/*:${APP_JAR}
CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args}) && EXIT_CODE=$? || EXIT_CODE=$?
+
if [ ${EXIT_CODE} -eq 2618 ]; then
# print usage
echo "${CMD}"
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/CommandArgs.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/CommandArgs.java
index c9d2eaf..ae904a7 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/CommandArgs.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/CommandArgs.java
@@ -40,7 +40,7 @@ public abstract class CommandArgs {
description = "job name")
protected String jobName = Constants.DEFAULT_JOB_NAME;
- protected List<String> originalParameters;
+ protected List<String> originalParameters = Collections.emptyList();
public abstract Command<?> buildCommand();
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommand.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommand.java
index e1f11d5..3510daa 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommand.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommand.java
@@ -15,17 +15,9 @@ import com.typesafe.config.ConfigObject;
import com.typesafe.config.ConfigUtil;
import com.typesafe.config.ConfigValueFactory;
import lombok.extern.slf4j.Slf4j;
-
-import java.io.File;
import java.nio.file.Path;
import java.util.Map;
-import java.util.Properties;
-
import static com.geedgenetworks.bootstrap.utils.ConfigFileUtils.checkConfigExist;
-import static com.geedgenetworks.common.Constants.MAPPING_GROOTSTREAM_UDF;
-import static com.geedgenetworks.common.Constants.MAPPING_GROOTSTREAM_UDF_DEFAULT_PLUGIN;
-import static com.hazelcast.internal.config.DeclarativeConfigUtil.SYSPROP_MEMBER_CONFIG;
-
@Slf4j
public class ExecuteCommand implements Command<ExecuteCommandArgs> {
private final ExecuteCommandArgs executeCommandArgs;
@@ -36,14 +28,7 @@ public class ExecuteCommand implements Command<ExecuteCommandArgs> {
@Override
public void execute() throws CommandExecuteException, ConfigCheckException {
- // Default System Properties
- Properties properties = System.getProperties();
- properties.setProperty(Constants.SYSPROP_GROOTSTREAM_CONFIG, "config" + File.separator + Constants.HAZELCAST_GROOTSTREAM_DEFAULT_YAML);
- properties.setProperty(SYSPROP_MEMBER_CONFIG, "config" + File.separator + "hazelcast.yaml");
- properties.setProperty(MAPPING_GROOTSTREAM_UDF, "config" + File.separator + MAPPING_GROOTSTREAM_UDF_DEFAULT_PLUGIN);
-
GrootStreamConfig grootStreamConfig = ConfigProvider.locateAndGetGrootStreamConfig();
-
Path configFile = ConfigFileUtils.getConfigPath(executeCommandArgs);
// check config file exist
checkConfigExist(configFile);
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommandArgs.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommandArgs.java
index 97bd228..fbf28f1 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommandArgs.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/command/ExecuteCommandArgs.java
@@ -7,12 +7,15 @@ import com.geedgenetworks.bootstrap.enums.TargetType;
import com.geedgenetworks.bootstrap.execution.StartBuilder;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
@EqualsAndHashCode(callSuper = true)
@Data
+@Slf4j
public class ExecuteCommandArgs extends CommandArgs {
@Parameter(names={"-e", "--deploy-mode"},
@@ -30,8 +33,9 @@ public class ExecuteCommandArgs extends CommandArgs {
@Override
public Command<?> buildCommand() {
StartBuilder.setDeployMode(getDeployMode());
+ userParamsToSysEnv();
if(checkConfig) {
- //to do check job config
+ // todo check job config
}
return new ExecuteCommand(this);
}
@@ -56,6 +60,27 @@ public class ExecuteCommandArgs extends CommandArgs {
+ '}';
}
+
+
+ private void userParamsToSysEnv() {
+ if (!this.variables.isEmpty()) {
+ variables.stream()
+ .filter(Objects::nonNull)
+ .map(variable -> variable.split("=", 2))
+ .filter(pair -> pair.length == 2)
+ .forEach(pair -> System.setProperty(pair[0], pair[1]));
+ }
+
+ if (!this.originalParameters.isEmpty()) {
+ this.originalParameters.stream()
+ .filter(Objects::nonNull)
+ .map(variable -> variable.split("=", 2))
+ .filter(pair -> pair.length == 2)
+ .forEach(pair -> System.setProperty(pair[0].replaceFirst("-D",""), pair[1]));
+ }
+
+ }
+
public static class TargetTypeConverter implements IStringConverter<TargetType> {
private static final List<TargetType> TARGET_TYPE_LIST = new ArrayList<>();
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobRuntimeEnvironment.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobRuntimeEnvironment.java
index 2090243..e03181b 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobRuntimeEnvironment.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/execution/JobRuntimeEnvironment.java
@@ -113,7 +113,7 @@ public class JobRuntimeEnvironment implements RuntimeEnvironment{
} else {
environment = StreamExecutionEnvironment.getExecutionEnvironment(configuration);
}
- configuration.setString(Constants.MAPPING_GROOTSTREAM_UDF, JSON.toJSONString(grootStreamConfig.getUdfMappingConfig()));
+ configuration.setString(Constants.SYSPROP_UDF_PLUGIN_CONFIG, JSON.toJSONString(grootStreamConfig.getUDFPluginConfig()));
configuration.setString(Constants.SYSPROP_GROOTSTREAM_CONFIG, JSON.toJSONString(grootStreamConfig.getEngineConfig()));
environment.getConfig().enableObjectReuse();
environment.getConfig().setGlobalJobParameters(configuration);
diff --git a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/main/GrootStreamRunner.java b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/main/GrootStreamRunner.java
index 04bcd58..4cc9ff6 100644
--- a/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/main/GrootStreamRunner.java
+++ b/groot-bootstrap/src/main/java/com/geedgenetworks/bootstrap/main/GrootStreamRunner.java
@@ -39,7 +39,10 @@ public class GrootStreamRunner {
command.add("--target");
command.add(bootstrapCommandArgs.getTargetType().getTarget());
}
+
+ // set flink original parameters
command.addAll(bootstrapCommandArgs.getOriginalParameters());
+
//set main class name
command.add("-c");
command.add(APP_NAME);