diff --git a/.github/scripts/start-submarine.sh b/.github/scripts/start-submarine.sh index c1cb9bd9f..831fd1fca 100644 --- a/.github/scripts/start-submarine.sh +++ b/.github/scripts/start-submarine.sh @@ -32,6 +32,7 @@ kubectl label namespace submarine istio-injection=enabled kubectl label namespace "$submarine_user_namespace" istio-injection=enabled helm install --wait --set storageClass.provisioner=rancher.io/local-path --set storageClass.volumeBindingMode=WaitForFirstConsumer submarine ./helm-charts/submarine -n submarine kubectl apply -f ./submarine-cloud-v2/artifacts/examples/example-submarine.yaml -n "$submarine_user_namespace" +kubectl apply -f ./submarine-cloud-v2/artifacts/submarine/submarine-server.yaml -n "$submarine_user_namespace" # Polling waiting for the submarine to be in the RUNNING state for ((i=0;i<$wait_times;++i)); do diff --git a/conf/submarine-site.xml b/conf/submarine-site.xml deleted file mode 100755 index d26262ed2..000000000 --- a/conf/submarine-site.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - submarine.cluster.addr - - submarine cluster address list, e.g. ip1:port1;ip2:port2;ip3:port3 - - - - submarine.server.addr - 0.0.0.0 - Server address - - - - submarine.server.port - 8080 - Server port. - - - - submarine.server.ssl - false - Should SSL be used by the submarine server? - - - - submarine.server.ssl.port - 8443 - Server ssl port. (used when ssl property is set to true) - - - - submarine.server.ssl.client.auth - false - Should client authentication be used for SSL connections? - - - - submarine.server.ssl.keystore.path - keystore - Path to keystore relative to submarine configuration directory - - - - submarine.server.ssl.keystore.type - JKS - The format of the given keystore (e.g. JKS or PKCS12) - - - - submarine.server.ssl.keystore.password - change me - Keystore password. Can be obfuscated by the Jetty Password tool - - - - - - submarine.server.ssl.truststore.path - truststore - Path to truststore relative to submarine configuration directory. Defaults to the keystore path - - - - submarine.server.ssl.truststore.type - JKS - The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type - - - - - - workbench.web.war - ../submarine-workbench-web.war - Submarine workbench web war file path. - - - - jdbc.driverClassName - com.mysql.jdbc.Driver - - - jdbc.url - jdbc:mysql://127.0.0.1:3306/submarine?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true - - - jdbc.username - submarine - - - jdbc.password - password - - - - metastore.jdbc.url - jdbc:mysql://127.0.0.1:3306/metastore?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false - - - metastore.jdbc.username - metastore - - - metastore.jdbc.password - password - - - - submarine.runtime.class - org.apache.submarine.server.submitter.yarn.YarnRuntimeFactory - RuntimeFactory for Submarine jobs - - - - submarine.server.rpc.enabled - false - Run jobs using rpc server. - - - - submarine.server.rpc.port - 8980 - Rpc server port - - - - submarine.submitter - k8s - The submitter which you want used in the server. Build-in k8s - - - - submarine.server.service.name - submarine-server - The name of submarine server deployment - - - diff --git a/conf/submarine-site.xml.template b/conf/submarine-site.xml.template deleted file mode 100755 index e234d53a9..000000000 --- a/conf/submarine-site.xml.template +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - submarine.cluster.addr - - submarine cluster address list, e.g. ip1:port1;ip2:port2;ip3:port3 - - - - submarine.server.addr - 0.0.0.0 - Server address - - - - submarine.server.port - 8080 - Server port. - - - - submarine.server.ssl - false - Should SSL be used by the submarine server? - - - - submarine.server.ssl.port - 8443 - Server ssl port. (used when ssl property is set to true) - - - - submarine.server.ssl.client.auth - false - Should client authentication be used for SSL connections? - - - - submarine.server.ssl.keystore.path - keystore - Path to keystore relative to submarine configuration directory - - - - submarine.server.ssl.keystore.type - JKS - The format of the given keystore (e.g. JKS or PKCS12) - - - - submarine.server.ssl.keystore.password - change me - Keystore password. Can be obfuscated by the Jetty Password tool - - - - - - submarine.server.ssl.truststore.path - truststore - Path to truststore relative to submarine configuration directory. Defaults to the keystore path - - - - submarine.server.ssl.truststore.type - JKS - The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type - - - - - - workbench.web.war - ../submarine-workbench-web.war - Submarine workbench web war file path. - - - - jdbc.driverClassName - com.mysql.jdbc.Driver - - - jdbc.url - jdbc:mysql://127.0.0.1:3306/submarine?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true - - - jdbc.username - submarine - - - jdbc.password - password - - - - metastore.jdbc.url - jdbc:mysql://127.0.0.1:3306/metastore?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false - - - metastore.jdbc.username - metastore - - - metastore.jdbc.password - password - - - - submarine.runtime.class - org.apache.submarine.server.submitter.yarn.YarnRuntimeFactory - RuntimeFactory for Submarine jobs - - - - submarine.server.rpc.enabled - false - Run jobs using rpc server. - - - - submarine.server.rpc.port - 8980 - Rpc server port - - - - submarine.submitter - k8s - The submitter which you want used in the server. Build-in k8s - - diff --git a/dev-support/docker-images/agent/Dockerfile b/dev-support/docker-images/agent/Dockerfile index 34fd4b4b8..56a2aa33c 100644 --- a/dev-support/docker-images/agent/Dockerfile +++ b/dev-support/docker-images/agent/Dockerfile @@ -34,7 +34,6 @@ ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk/jre # Install Submarine ADD ./tmp/submarine-k8s-agent-*.tar.gz /opt/ RUN ln -s /opt/submarine-k8s-agent-* "/opt/submarine-current" -ADD ./tmp/submarine-site.xml "/opt/submarine-current/conf/" WORKDIR /opt/submarine-current diff --git a/dev-support/docker-images/agent/build.sh b/dev-support/docker-images/agent/build.sh index a519b0244..afc84a02f 100755 --- a/dev-support/docker-images/agent/build.sh +++ b/dev-support/docker-images/agent/build.sh @@ -40,10 +40,6 @@ fi mkdir -p "${CURRENT_PATH}/tmp" cp ${SUBMARINE_HOME}/submarine-server/server-submitter/submarine-k8s-agent/target/submarine-k8s-agent-${SUBMARINE_VERSION}.tar.gz "${CURRENT_PATH}/tmp" -# Replace the submarine.server.addr in the submarine-site.xml file with the link name of the submarine container -# `submarine-server` is submarine server container name -cp ${SUBMARINE_HOME}/conf/submarine-site.xml "${CURRENT_PATH}/tmp/" - # build image cd ${CURRENT_PATH} diff --git a/dev-support/docker-images/submarine/Dockerfile b/dev-support/docker-images/submarine/Dockerfile index eb77fa778..3b6171e11 100644 --- a/dev-support/docker-images/submarine/Dockerfile +++ b/dev-support/docker-images/submarine/Dockerfile @@ -34,7 +34,6 @@ ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk/jre # Install Submarine ADD ./tmp/submarine-dist-*.tar.gz /opt/ RUN ln -s /opt/submarine-dist-* "/opt/submarine-current" -ADD ./tmp/submarine-site.xml "/opt/submarine-current/conf/" ADD ./tmp/submarine.sh "/opt/submarine-current/bin/" ADD ./tmp/mysql-connector-java-5.1.39.jar "/opt/submarine-current/lib/" diff --git a/dev-support/docker-images/submarine/build.sh b/dev-support/docker-images/submarine/build.sh index 56b6720e3..164bbf501 100755 --- a/dev-support/docker-images/submarine/build.sh +++ b/dev-support/docker-images/submarine/build.sh @@ -48,11 +48,6 @@ trap "test -f $tmpfile && rm $tmpfile" RETURN curl -L -o $tmpfile ${MYSQL_JAR_URL} mv $tmpfile ${CURRENT_PATH}/tmp/mysql-connector-java-${MYSQL_VERSION}.jar -# Replace the mysql jdbc.url in the submarine-site.xml file with the link name of the submarine container -# `submarine-database` is submarine database container name -cp ${SUBMARINE_HOME}/conf/submarine-site.xml "${CURRENT_PATH}/tmp/" -sed -i.bak 's/127.0.0.1:3306/submarine-database:3306/g' "${CURRENT_PATH}/tmp/submarine-site.xml" - cp ${SUBMARINE_HOME}/bin/submarine.sh "${CURRENT_PATH}/tmp/" # build image diff --git a/dev-support/mini-submarine/conf/bootstrap.sh b/dev-support/mini-submarine/conf/bootstrap.sh index 3152c6af3..1424fae21 100755 --- a/dev-support/mini-submarine/conf/bootstrap.sh +++ b/dev-support/mini-submarine/conf/bootstrap.sh @@ -36,15 +36,15 @@ for f in slaves core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml contai fi done -# Copy submarine config -for f in slaves submarine-site.xml submarine-env.sh; do - if [[ -e ${CONFIG_DIR}/$f ]]; then - cp ${CONFIG_DIR}/$f /opt/submarine-current/conf/$f - else - echo "ERROR: Could not find $f in $CONFIG_DIR" - exit 1 - fi -done +# # Copy submarine config +# for f in slaves submarine-site.xml submarine-env.sh; do +# if [[ -e ${CONFIG_DIR}/$f ]]; then +# cp ${CONFIG_DIR}/$f /opt/submarine-current/conf/$f +# else +# echo "ERROR: Could not find $f in $CONFIG_DIR" +# exit 1 +# fi +# done # create cgroups mkdir -p /sys/fs/cgroup/cpu/hadoop-yarn diff --git a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml index 50cb0137f..d10f16322 100644 --- a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml +++ b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml @@ -44,6 +44,53 @@ spec: selector: app: "submarine-server" --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: submarine-config +data: + SUBMARINE_SERVER_PORT: "8080" + SUBMARINE_SERVER_PORT_8080_TCP: "8080" + K8S_APISERVER_URL: "kubernetes.default.svc" + submarine.conf.dir: "conf" + submarine.localization.max-allowed-file-size-mb: "2048" + submarine.server.addr: "0.0.0.0" + submarine.server.port: "8080" + submarine.server.ssl: "false" + submarine.server.ssl.port: "8443" + submarine.server.jetty.thread.pool.max: "400" + submarine.server.jetty.thread.pool.min: "8" + submarine.server.jetty.thread.pool.timeout: "30" + submarine.server.jetty.request.header.size: "8192" + submarine.server.ssl.client.auth: "false" + submarine.server.ssl.keystore.path: "keystore" + submarine.server.ssl.keystore.type: "JKS" + submarine.server.ssl.keystore.password: "" + submarine.server.ssl.key.manager.password: "" # Saved as null in SubmarineConfVars.java + submarine.server.ssl.truststore.path: "" # Saved as null in SubmarineConfVars.java + submarine.server.ssl.truststore.type: "" # Saved as null in SubmarineConfVars.java + submarine.server.ssl.truststore.password: "" # Saved as null in SubmarineConfVars.java + submarine.cluster.addr: "" + ubmarine.server.rpc.enabled: "false" + submarine.server.rpc.port: "8980" + cluster.heartbeat.interval: "3000" + cluster.heartbeat.timeout: "9000" + jdbc.driverClassName: "com.mysql.jdbc.Driver" + jdbc.url: "jdbc:mysql://127.0.0.1:3306/submarine?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC&useTimezone=true&useLegacyDatetimeCode=true" + jdbc.username: "submarine" + jdbc.password: "password" + metastore.jdbc.url: "jdbc:mysql://127.0.0.1:3306/metastore?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false" + metastore.jdbc.username: "metastore" + metastore.jdbc.password: "password" + submarine.notebook.default.overwrite_json: "" + workbench.websocket.max.text.message.size: "1024000" + workbench.web.war: "../submarine-workbench-web.war" # latest: "submarine-workbench/workbench-web/dist" + submarine.runtime.class: "org.apache.submarine.server.submitter.yarn.YarnRuntimeFactory" + submarine.submitter: "k8s" + submarine.server.service.name: "submarine-server" + environment.conda.min.version: "4.0.1" + environment.conda.max.version: "4.11.10" +--- # Source: submarine/templates/submarine-server.yaml apiVersion: apps/v1 kind: Deployment @@ -89,15 +136,11 @@ spec: emptyDir: { } containers: - name: "submarine-server" - env: - - name: SUBMARINE_SERVER_PORT - value: "8080" - - name: SUBMARINE_SERVER_PORT_8080_TCP - value: "8080" - - name: K8S_APISERVER_URL - value: "kubernetes.default.svc" image: "apache/submarine:server-0.8.0-SNAPSHOT" imagePullPolicy: IfNotPresent ports: - containerPort: 8080 + envFrom: + - configMapRef: + name: submarine-config diff --git a/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfVars.java b/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfVars.java index a96a88596..28c4ceffd 100644 --- a/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfVars.java +++ b/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfVars.java @@ -24,59 +24,52 @@ public class SubmarineConfVars { private static final Logger LOG = LoggerFactory.getLogger(SubmarineConfVars.class); public enum ConfVars { - SUBMARINE_CONF_DIR("submarine.conf.dir", "conf"), + + SUBMARINE_CONF_DIR("submarine.conf.dir", VarType.STRING), SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB( - "submarine.localization.max-allowed-file-size-mb", 2048L), - SUBMARINE_SERVER_ADDR("submarine.server.addr", "0.0.0.0"), - SUBMARINE_SERVER_PORT("submarine.server.port", 8080), - SUBMARINE_SERVER_SSL("submarine.server.ssl", false), - SUBMARINE_SERVER_SSL_PORT("submarine.server.ssl.port", 8443), - SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX("submarine.server.jetty.thread.pool.max", 400), - SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN("submarine.server.jetty.thread.pool.min", 8), - SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT("submarine.server.jetty.thread.pool.timeout", 30), - SUBMARINE_SERVER_JETTY_REQUEST_HEADER_SIZE("submarine.server.jetty.request.header.size", 8192), - SUBMARINE_SERVER_SSL_CLIENT_AUTH("submarine.server.ssl.client.auth", false), - SUBMARINE_SERVER_SSL_KEYSTORE_PATH("submarine.server.ssl.keystore.path", "keystore"), - SUBMARINE_SERVER_SSL_KEYSTORE_TYPE("submarine.server.ssl.keystore.type", "JKS"), - SUBMARINE_SERVER_SSL_KEYSTORE_PASSWORD("submarine.server.ssl.keystore.password", ""), - SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD("submarine.server.ssl.key.manager.password", null), - SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH("submarine.server.ssl.truststore.path", null), - SUBMARINE_SERVER_SSL_TRUSTSTORE_TYPE("submarine.server.ssl.truststore.type", null), - SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD("submarine.server.ssl.truststore.password", null), - SUBMARINE_CLUSTER_ADDR("submarine.cluster.addr", ""), + "submarine.localization.max-allowed-file-size-mb", VarType.LONG), + SUBMARINE_SERVER_ADDR("submarine.server.addr", VarType.STRING), + SUBMARINE_SERVER_PORT("submarine.server.port", VarType.INT), + SUBMARINE_SERVER_SSL("submarine.server.ssl", VarType.BOOLEAN), + SUBMARINE_SERVER_SSL_PORT("submarine.server.ssl.port", VarType.INT), + SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX("submarine.server.jetty.thread.pool.max", VarType.INT), + SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN("submarine.server.jetty.thread.pool.min", VarType.INT), + SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT("submarine.server.jetty.thread.pool.timeout", VarType.INT), + SUBMARINE_SERVER_JETTY_REQUEST_HEADER_SIZE("submarine.server.jetty.request.header.size", VarType.INT), + SUBMARINE_SERVER_SSL_CLIENT_AUTH("submarine.server.ssl.client.auth", VarType.BOOLEAN), + SUBMARINE_SERVER_SSL_KEYSTORE_PATH("submarine.server.ssl.keystore.path", VarType.STRING), + SUBMARINE_SERVER_SSL_KEYSTORE_TYPE("submarine.server.ssl.keystore.type", VarType.STRING), + SUBMARINE_SERVER_SSL_KEYSTORE_PASSWORD("submarine.server.ssl.keystore.password", VarType.STRING), + SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD("submarine.server.ssl.key.manager.password", VarType.STRING), + SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH("submarine.server.ssl.truststore.path", VarType.STRING), + SUBMARINE_SERVER_SSL_TRUSTSTORE_TYPE("submarine.server.ssl.truststore.type", VarType.STRING), + SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD("submarine.server.ssl.truststore.password", VarType.STRING), + SUBMARINE_CLUSTER_ADDR("submarine.cluster.addr", VarType.STRING), SUBMARINE_SERVER_RPC_ENABLED( - "submarine.server.rpc.enabled", false), + "submarine.server.rpc.enabled", VarType.BOOLEAN), SUBMARINE_SERVER_RPC_PORT( - "submarine.server.rpc.port", 8980), - CLUSTER_HEARTBEAT_INTERVAL("cluster.heartbeat.interval", 3000), - CLUSTER_HEARTBEAT_TIMEOUT("cluster.heartbeat.timeout", 9000), - - JDBC_DRIVERCLASSNAME("jdbc.driverClassName", "com.mysql.jdbc.Driver"), - JDBC_URL("jdbc.url", "jdbc:mysql://127.0.0.1:3306/submarine" + - "?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&" + - "failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&" + - // use timezone for dateformat, current default database timezone is utc - "serverTimezone=UTC&useTimezone=true&useLegacyDatetimeCode=true"), - JDBC_USERNAME("jdbc.username", "submarine"), - JDBC_PASSWORD("jdbc.password", "password"), - METASTORE_JDBC_URL("metastore.jdbc.url", "jdbc:mysql://127.0.0.1:3306/metastore" + - "?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&" + - "failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false"), - METASTORE_JDBC_USERNAME("metastore.jdbc.username", "metastore"), - METASTORE_JDBC_PASSWORD("metastore.jdbc.password", "password"), - - SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON("submarine.notebook.default.overwrite_json", ""), + "submarine.server.rpc.port", VarType.INT), + CLUSTER_HEARTBEAT_INTERVAL("cluster.heartbeat.interval", VarType.INT), + CLUSTER_HEARTBEAT_TIMEOUT("cluster.heartbeat.timeout", VarType.INT), - WORKBENCH_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE( - "workbench.websocket.max.text.message.size", "1024000"), - WORKBENCH_WEB_WAR("workbench.web.war", "submarine-workbench/workbench-web/dist"), - SUBMARINE_RUNTIME_CLASS("submarine.runtime.class", - "org.apache.submarine.server.submitter.yarn.YarnRuntimeFactory"), - SUBMARINE_SUBMITTER("submarine.submitter", "k8s"), - SUBMARINE_SERVER_SERVICE_NAME("submarine.server.service.name", "submarine-server"), - ENVIRONMENT_CONDA_MIN_VERSION("environment.conda.min.version", "4.0.1"), - ENVIRONMENT_CONDA_MAX_VERSION("environment.conda.max.version", "4.11.10"); + JDBC_DRIVERCLASSNAME("jdbc.driverClassName", VarType.STRING), + JDBC_URL("jdbc.url", VarType.STRING), + JDBC_USERNAME("jdbc.username", VarType.STRING), + JDBC_PASSWORD("jdbc.password", VarType.STRING), + METASTORE_JDBC_URL("metastore.jdbc.url", VarType.STRING), + METASTORE_JDBC_USERNAME("metastore.jdbc.username", VarType.STRING), + METASTORE_JDBC_PASSWORD("metastore.jdbc.password", VarType.STRING), + + SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON("submarine.notebook.default.overwrite_json", VarType.STRING), + WORKBENCH_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE( + "workbench.websocket.max.text.message.size", VarType.STRING), + WORKBENCH_WEB_WAR("workbench.web.war", VarType.STRING), + SUBMARINE_SUBMITTER("submarine.submitter", VarType.STRING), + SUBMARINE_SERVER_SERVICE_NAME("submarine.server.service.name", VarType.STRING), + ENVIRONMENT_CONDA_MIN_VERSION("environment.conda.min.version", VarType.STRING), + ENVIRONMENT_CONDA_MAX_VERSION("environment.conda.max.version", VarType.STRING); + private String varName; @SuppressWarnings("rawtypes") private Class varClass; @@ -87,60 +80,69 @@ public enum ConfVars { private boolean booleanValue; private long longValue; - - ConfVars(String varName, String varValue) { - this.varName = varName; - this.varClass = String.class; - this.stringValue = varValue; - this.intValue = -1; - this.floatValue = -1; - this.longValue = -1; - this.booleanValue = false; - this.type = VarType.STRING; - } - - ConfVars(String varName, int intValue) { - this.varName = varName; - this.varClass = Integer.class; - this.stringValue = null; - this.intValue = intValue; - this.floatValue = -1; - this.longValue = -1; - this.booleanValue = false; - this.type = VarType.INT; - } - - ConfVars(String varName, long longValue) { - this.varName = varName; - this.varClass = Integer.class; - this.stringValue = null; - this.intValue = -1; - this.floatValue = -1; - this.longValue = longValue; - this.booleanValue = false; - this.type = VarType.LONG; - } - - ConfVars(String varName, float floatValue) { - this.varName = varName; - this.varClass = Float.class; - this.stringValue = null; - this.intValue = -1; - this.longValue = -1; - this.floatValue = floatValue; - this.booleanValue = false; - this.type = VarType.FLOAT; - } - - ConfVars(String varName, boolean booleanValue) { - this.varName = varName; - this.varClass = Boolean.class; - this.stringValue = null; - this.intValue = -1; - this.longValue = -1; - this.floatValue = -1; - this.booleanValue = booleanValue; - this.type = VarType.BOOLEAN; + + ConfVars(String varName, VarType type) { + switch(type) { + case STRING: + this.varName = varName; + this.varClass = String.class; + if (varName == "submarine.server.ssl.key.manager.password" || + varName == "submarine.server.ssl.truststore.path" || + varName == "submarine.server.ssl.truststore.type" || + varName == "submarine.server.ssl.truststore.password" + ) { + this.stringValue = null; + } else { + this.stringValue = System.getenv(varName); + } + this.intValue = -1; + this.floatValue = -1; + this.longValue = -1; + this.booleanValue = false; + break; + + case INT: + this.varName = varName; + this.varClass = Integer.class; + this.stringValue = null; + this.intValue = Integer.valueOf(System.getenv(varName)); + this.floatValue = -1; + this.longValue = -1; + this.booleanValue = false; + break; + + case LONG: + this.varName = varName; + this.varClass = Integer.class; + this.stringValue = null; + this.intValue = -1; + this.floatValue = -1; + this.longValue = Long.parseLong(System.getenv(varName), 10); + this.booleanValue = false; + break; + + case FLOAT: + this.varName = varName; + this.varClass = Float.class; + this.stringValue = null; + this.intValue = -1; + this.longValue = -1; + this.floatValue = Float.parseFloat(System.getenv(varName)); + this.booleanValue = false; + break; + + case BOOLEAN: + this.varName = varName; + this.varClass = Boolean.class; + this.stringValue = null; + this.intValue = -1; + this.longValue = -1; + this.floatValue = -1; + this.booleanValue = Boolean.parseBoolean(System.getenv(varName)); + break; + } + this.type = type; + LOG.info(varName + ": Using new constructor!!!"); } public String getVarName() { diff --git a/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfiguration.java b/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfiguration.java index 325906215..1e8ddcc12 100644 --- a/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfiguration.java +++ b/submarine-commons/commons-utils/src/main/java/org/apache/submarine/commons/utils/SubmarineConfiguration.java @@ -19,51 +19,25 @@ package org.apache.submarine.commons.utils; import com.google.common.annotations.VisibleForTesting; -import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.XMLConfiguration; -import org.apache.commons.configuration.tree.ConfigurationNode; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.net.URL; import java.util.HashMap; -import java.util.List; import java.util.Map; public class SubmarineConfiguration extends XMLConfiguration { private static final Logger LOG = LoggerFactory.getLogger(SubmarineConfiguration.class); private static final long serialVersionUID = 4749303235693848035L; - private static final String SUBMARINE_SITE_XML = "submarine-site.xml"; - public static final String SUBMARINE_RUNTIME_APP_TYPE = "SUBMARINE"; private static volatile SubmarineConfiguration conf; private Map properties = new HashMap<>(); - private SubmarineConfiguration(URL url) throws ConfigurationException { - setDelimiterParsingDisabled(true); - load(url); - initProperties(); - } - - private void initProperties() { - List nodes = getRootNode().getChildren(); - if (nodes == null || nodes.isEmpty()) { - return; - } - for (ConfigurationNode p : nodes) { - String name = (String) p.getChildren("name").get(0).getValue(); - String value = (String) p.getChildren("value").get(0).getValue(); - if (!StringUtils.isEmpty(name)) { - properties.put(name, value); - } - } - } - private SubmarineConfiguration() { SubmarineConfVars.ConfVars[] vars = SubmarineConfVars.ConfVars.values(); for (SubmarineConfVars.ConfVars v : vars) { @@ -89,47 +63,14 @@ public static SubmarineConfiguration getInstance() { if (conf == null) { synchronized (SubmarineConfiguration.class) { if (conf == null) { - conf = newInstance(); + // conf = newInstance(); + conf = new SubmarineConfiguration(); } } } return conf; } - // Create a new instance - // Note: Cannot be mixed with getInstance() - public static SubmarineConfiguration newInstance() { - SubmarineConfiguration submarineConfig; - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - URL url; - - url = SubmarineConfiguration.class.getResource(SUBMARINE_SITE_XML); - if (url == null) { - ClassLoader cl = SubmarineConfiguration.class.getClassLoader(); - if (cl != null) { - url = cl.getResource(SUBMARINE_SITE_XML); - } - } - if (url == null) { - url = classLoader.getResource(SUBMARINE_SITE_XML); - } - - if (url == null) { - LOG.warn("Failed to load configuration, proceeding with a default"); - submarineConfig = new SubmarineConfiguration(); - } else { - try { - LOG.info("Load configuration from " + url); - submarineConfig = new SubmarineConfiguration(url); - } catch (ConfigurationException e) { - LOG.warn("Failed to load configuration from " + url + " proceeding with a default", e); - submarineConfig = new SubmarineConfiguration(); - } - } - - return submarineConfig; - } - public String getServerAddress() { return getString(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_ADDR); } diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java index 92ce425ad..f18fd3e07 100644 --- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java +++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java @@ -212,6 +212,15 @@ private static Server setupJettyServer(SubmarineConfiguration conf) { new QueuedThreadPool(conf.getInt(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX), conf.getInt(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN), conf.getInt(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT)); + // Debug + LOG.info("//////////////////// setupJettyServer Debug //////////////////"); + LOG.info("SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX: " + + Integer.toString(conf.getInt(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX))); + LOG.info("SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN: " + + Integer.toString(conf.getInt(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN))); + LOG.info("SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT: " + + Integer.toString(conf.getInt(SubmarineConfVars.ConfVars.SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT))); + final Server server = new Server(threadPool); ServerConnector connector; @@ -235,8 +244,12 @@ private static Server setupJettyServer(SubmarineConfiguration conf) { } else { connector = new ServerConnector(server); } + // Debug + LOG.info("useSsl: " + Boolean.toString(conf.useSsl())); configureRequestHeaderSize(conf, connector); + // Debug + LOG.info("getJettyRequestHeaderSize: " + Integer.toString(conf.getJettyRequestHeaderSize())); // Set some timeout options to make debugging easier. int timeout = 1000 * 30; connector.setIdleTimeout(timeout); @@ -246,6 +259,12 @@ private static Server setupJettyServer(SubmarineConfiguration conf) { } else { connector.setPort(conf.getServerPort()); } + // Debug + LOG.info("getServerAddress: " + conf.getServerAddress()); + LOG.info("getServerSslPort: " + conf.getServerSslPort()); + LOG.info("getServerPort: " + conf.getServerPort()); + + LOG.info("////////////////////////////////////////////////////////////////////"); server.addConnector(connector); return server;