From b0dafa36822ee52457d3be115f36736072102125 Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Tue, 7 Jun 2022 01:32:03 +0800 Subject: [PATCH 01/13] SUBMARINE01261. Add configmap --- .../artifacts/submarine/submarine-server.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml index 50cb0137f..a09109250 100644 --- a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml +++ b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml @@ -44,6 +44,13 @@ spec: selector: app: "submarine-server" --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: submarine-config +data: + test: "helloworld" +--- # Source: submarine/templates/submarine-server.yaml apiVersion: apps/v1 kind: Deployment From 98d9b84d2cf0f26aab30cd5b0f232a63635d196f Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Tue, 7 Jun 2022 02:56:27 +0800 Subject: [PATCH 02/13] SUBMARINE-1261. Add configmap --- submarine-cloud-v2/artifacts/submarine/submarine-server.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml index a09109250..365ea82c3 100644 --- a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml +++ b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml @@ -50,6 +50,7 @@ metadata: name: submarine-config data: test: "helloworld" + submarine.conf.dir: "conf" --- # Source: submarine/templates/submarine-server.yaml apiVersion: apps/v1 From 569a266607c059d1c9f247ae20e615faf9277bb5 Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Tue, 7 Jun 2022 17:57:24 +0800 Subject: [PATCH 03/13] SUBMARINE-1261. Check if configurations form configamp correct --- .../artifacts/submarine/submarine-server.yaml | 52 +++++++++++--- .../commons/utils/SubmarineConfVars.java | 47 ++++++++++++- .../commons/utils/SubmarineConfiguration.java | 70 ++++++++++--------- .../submarine/server/SubmarineServer.java | 5 ++ 4 files changed, 133 insertions(+), 41 deletions(-) diff --git a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml index 365ea82c3..3c6850091 100644 --- a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml +++ b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml @@ -49,8 +49,48 @@ kind: ConfigMap metadata: name: submarine-config data: - test: "helloworld" + float.test: "-123.456" + 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/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 @@ -97,15 +137,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..122a14328 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,6 +24,7 @@ public class SubmarineConfVars { private static final Logger LOG = LoggerFactory.getLogger(SubmarineConfVars.class); public enum ConfVars { + FLOAT_TEST("float.test", -123.456f), SUBMARINE_CONF_DIR("submarine.conf.dir", "conf"), SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB( "submarine.localization.max-allowed-file-size-mb", 2048L), @@ -91,7 +92,19 @@ public enum ConfVars { ConfVars(String varName, String varValue) { this.varName = varName; this.varClass = String.class; - this.stringValue = varValue; + this.stringValue = (varValue == null ? "" : varValue); + if (varName.equals("submarine.runtime.class")) { + LOG.info("!!!!!!!!!!! input: " + varValue); + LOG.info("!!!!!!!!!!! this.stringValue: " + this.stringValue); + } + String stringValueFromEnv = System.getenv(varName); + if (this.stringValue.equals(stringValueFromEnv)) { + LOG.info(varName + ": Equal"); + } else { + LOG.info("--------------- Error ---------------"); + LOG.info(varName + ": " + this.stringValue + " != " + stringValueFromEnv); + LOG.info("-------------------------------------"); + } this.intValue = -1; this.floatValue = -1; this.longValue = -1; @@ -104,6 +117,14 @@ public enum ConfVars { this.varClass = Integer.class; this.stringValue = null; this.intValue = intValue; + int intValueFromEnv = Integer.valueOf(System.getenv(varName)); + if (this.intValue == intValueFromEnv) { + LOG.info(varName + ": Equal"); + } else { + LOG.info("--------------- Error ---------------"); + LOG.info(varName + ": " + this.intValue + " != " + intValueFromEnv); + LOG.info("-------------------------------------"); + } this.floatValue = -1; this.longValue = -1; this.booleanValue = false; @@ -117,6 +138,14 @@ public enum ConfVars { this.intValue = -1; this.floatValue = -1; this.longValue = longValue; + long longValueFromEnv = Long.parseLong(System.getenv(varName), 10); + if (this.longValue == longValueFromEnv) { + LOG.info(varName + ": Equal"); + } else { + LOG.info("--------------- Error ---------------"); + LOG.info(varName + ": " + this.longValue + " != " + longValueFromEnv); + LOG.info("-------------------------------------"); + } this.booleanValue = false; this.type = VarType.LONG; } @@ -128,6 +157,14 @@ public enum ConfVars { this.intValue = -1; this.longValue = -1; this.floatValue = floatValue; + float floatValueFromEnv = Float.parseFloat(System.getenv(varName)); + if (this.floatValue == floatValueFromEnv) { + LOG.info(varName + ": Equal"); + } else { + LOG.info("--------------- Error ---------------"); + LOG.info(varName + ": " + this.floatValue + " != " + floatValueFromEnv); + LOG.info("-------------------------------------"); + } this.booleanValue = false; this.type = VarType.FLOAT; } @@ -140,6 +177,14 @@ public enum ConfVars { this.longValue = -1; this.floatValue = -1; this.booleanValue = booleanValue; + boolean booleanValueFromEnv = Boolean.parseBoolean(System.getenv(varName)); + if (this.booleanValue == booleanValueFromEnv) { + LOG.info(varName + ": Equal"); + } else { + LOG.info("--------------- Error ---------------"); + LOG.info(varName + ": " + this.booleanValue + " != " + booleanValueFromEnv); + LOG.info("-------------------------------------"); + } this.type = VarType.BOOLEAN; } 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..588bd995e 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 @@ -89,46 +89,52 @@ public static SubmarineConfiguration getInstance() { if (conf == null) { synchronized (SubmarineConfiguration.class) { if (conf == null) { - conf = newInstance(); + // conf = newInstance(); + conf = new SubmarineConfiguration(); } } } return conf; } + // Testing: get a new default instance + public static SubmarineConfiguration getDefaultInstance() { + return new SubmarineConfiguration(); + } + // 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 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..62a6df270 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 @@ -80,6 +80,11 @@ public static long getServerTimeStamp() { public static void main(String[] args) throws InterruptedException { PropertyConfigurator.configure(ClassLoader.getSystemResource("log4j.properties")); + // ////////////// Configmap Test Message ////////////// + // LOG.info("Print all configurations"); + // SubmarineConfiguration.getDefaultInstance(); + // LOG.info("//////////////////////////////////////////////"); + // ////////////////////////////////////////////////////////// LOG.info("Submarine server Host: " + conf.getServerAddress()); if (!conf.useSsl()) { From 566dbfe038d7ebebf1f27294481297ee7c2030ab Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Tue, 7 Jun 2022 19:01:36 +0800 Subject: [PATCH 04/13] SUBMARINE1261. Using new constructor in SubmarineConfVars.java --- .../commons/utils/SubmarineConfVars.java | 150 ++++++++++++------ 1 file changed, 102 insertions(+), 48 deletions(-) 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 122a14328..c745abc6f 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,53 @@ public class SubmarineConfVars { private static final Logger LOG = LoggerFactory.getLogger(SubmarineConfVars.class); public enum ConfVars { - FLOAT_TEST("float.test", -123.456f), - SUBMARINE_CONF_DIR("submarine.conf.dir", "conf"), + FLOAT_TEST("float.test", VarType.FLOAT), + 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), + "submarine.server.rpc.port", VarType.INT), + CLUSTER_HEARTBEAT_INTERVAL("cluster.heartbeat.interval", VarType.INT), + CLUSTER_HEARTBEAT_TIMEOUT("cluster.heartbeat.timeout", VarType.INT), - 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"), + 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", ""), + SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON("submarine.notebook.default.overwrite_json", VarType.STRING), WORKBENCH_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE( - "workbench.websocket.max.text.message.size", "1024000"), - WORKBENCH_WEB_WAR("workbench.web.war", "submarine-workbench/workbench-web/dist"), + "workbench.websocket.max.text.message.size", VarType.STRING), + WORKBENCH_WEB_WAR("workbench.web.war", VarType.STRING), 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"); + 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") @@ -89,14 +83,74 @@ public enum ConfVars { private long longValue; + 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!!!"); + } + ConfVars(String varName, String varValue) { this.varName = varName; this.varClass = String.class; this.stringValue = (varValue == null ? "" : varValue); - if (varName.equals("submarine.runtime.class")) { - LOG.info("!!!!!!!!!!! input: " + varValue); - LOG.info("!!!!!!!!!!! this.stringValue: " + this.stringValue); - } String stringValueFromEnv = System.getenv(varName); if (this.stringValue.equals(stringValueFromEnv)) { LOG.info(varName + ": Equal"); From 60bf807b7ec938c577974ae116644e2dbad48fcf Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Tue, 7 Jun 2022 21:33:01 +0800 Subject: [PATCH 05/13] SUBMARINE-1261. Remove submarine-site.xml --- conf/submarine-site.xml | 170 ------------------ conf/submarine-site.xml.template | 163 ----------------- dev-support/docker-images/agent/Dockerfile | 1 - dev-support/docker-images/agent/build.sh | 4 - .../docker-images/submarine/Dockerfile | 1 - dev-support/docker-images/submarine/build.sh | 5 - .../commons/utils/SubmarineConfiguration.java | 7 - .../submarine/server/SubmarineServer.java | 5 - 8 files changed, 356 deletions(-) delete mode 100755 conf/submarine-site.xml delete mode 100755 conf/submarine-site.xml.template 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/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 588bd995e..df7133a2e 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 @@ -36,8 +36,6 @@ 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; @@ -97,11 +95,6 @@ public static SubmarineConfiguration getInstance() { return conf; } - // Testing: get a new default instance - public static SubmarineConfiguration getDefaultInstance() { - return new SubmarineConfiguration(); - } - // Create a new instance // Note: Cannot be mixed with getInstance() // public static SubmarineConfiguration newInstance() { 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 62a6df270..92ce425ad 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 @@ -80,11 +80,6 @@ public static long getServerTimeStamp() { public static void main(String[] args) throws InterruptedException { PropertyConfigurator.configure(ClassLoader.getSystemResource("log4j.properties")); - // ////////////// Configmap Test Message ////////////// - // LOG.info("Print all configurations"); - // SubmarineConfiguration.getDefaultInstance(); - // LOG.info("//////////////////////////////////////////////"); - // ////////////////////////////////////////////////////////// LOG.info("Submarine server Host: " + conf.getServerAddress()); if (!conf.useSsl()) { From 57518256d94798c7f37d59582a0509ceb1a9e0cd Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Sun, 12 Jun 2022 18:23:20 +0800 Subject: [PATCH 06/13] SUBMARINE-1261. Add debug message --- .../commons/utils/SubmarineConfVars.java | 58 ++++++++++++++++++- .../submarine/server/SubmarineServer.java | 19 ++++++ 2 files changed, 76 insertions(+), 1 deletion(-) 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 c745abc6f..725494d79 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,6 +24,7 @@ public class SubmarineConfVars { private static final Logger LOG = LoggerFactory.getLogger(SubmarineConfVars.class); public enum ConfVars { + FLOAT_TEST("float.test", VarType.FLOAT), SUBMARINE_CONF_DIR("submarine.conf.dir", VarType.STRING), SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB( @@ -71,7 +72,62 @@ public enum ConfVars { 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); + + /* + FLOAT_TEST("float.test", -123.456f), + SUBMARINE_CONF_DIR("submarine.conf.dir", "conf"), + 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_SERVER_RPC_ENABLED( + "submarine.server.rpc.enabled", false), + 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", ""), + 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"); + */ private String varName; @SuppressWarnings("rawtypes") private Class varClass; @@ -82,7 +138,7 @@ public enum ConfVars { private boolean booleanValue; private long longValue; - + ConfVars(String varName, VarType type) { switch(type) { case STRING: 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; From fa76e300d08ffdd3341813b739d24f4bb763c716 Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Sun, 12 Jun 2022 19:21:02 +0800 Subject: [PATCH 07/13] SUBMARINE-1261. Config key "workbench.web.war" use old value --- submarine-cloud-v2/artifacts/submarine/submarine-server.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml index 3c6850091..274f48e61 100644 --- a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml +++ b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml @@ -85,7 +85,7 @@ data: metastore.jdbc.password: "password" submarine.notebook.default.overwrite_json: "" workbench.websocket.max.text.message.size: "1024000" - workbench.web.war: "submarine-workbench/workbench-web/dist" + 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" From 7d93acd9f4954e997937c7394e89b14830827441 Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Sun, 12 Jun 2022 20:22:59 +0800 Subject: [PATCH 08/13] SUBMARINE-1261. Apply submarine-server.yaml in start-submarine.sh to construct configmap --- .github/scripts/start-submarine.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/scripts/start-submarine.sh b/.github/scripts/start-submarine.sh index c1cb9bd9f..8a5d22a1b 100644 --- a/.github/scripts/start-submarine.sh +++ b/.github/scripts/start-submarine.sh @@ -30,6 +30,8 @@ kubectl create namespace submarine kubectl create namespace "$submarine_user_namespace" kubectl label namespace submarine istio-injection=enabled kubectl label namespace "$submarine_user_namespace" istio-injection=enabled +kubectl apply -n submarine-user-test -f ./submarine-cloud-v2/artifacts/submarine/submarine-server.yaml # For github action +kubectl apply 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" From 3d6e77f4d4939f5b20e6a25a3be13f503df1b921 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 26 Apr 2022 12:11:24 +0800 Subject: [PATCH 09/13] SUBMARINE-1261. Add configmap and test messge --- .../submarine/commons/utils/SubmarineConfiguration.java | 5 +++++ .../java/org/apache/submarine/server/SubmarineServer.java | 3 +++ 2 files changed, 8 insertions(+) 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 df7133a2e..4d8ebb182 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 @@ -129,6 +129,11 @@ public static SubmarineConfiguration getInstance() { // return submarineConfig; // } + // Debug + public int getTestConfig() { + return getInt(SubmarineConfVars.ConfVars.TEST_CONFIG); + } + 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 f18fd3e07..0f355d89d 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 @@ -80,6 +80,9 @@ public static long getServerTimeStamp() { public static void main(String[] args) throws InterruptedException { PropertyConfigurator.configure(ClassLoader.getSystemResource("log4j.properties")); + + // Debug + LOG.info("Test config message:" + conf.getTestConfig()); LOG.info("Submarine server Host: " + conf.getServerAddress()); if (!conf.useSsl()) { From cdb3073a474ba84e2401c598bf1e35acc6de39ff Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Wed, 4 May 2022 02:35:08 +0800 Subject: [PATCH 10/13] SUBMARINE-1261. Put configurations into configmap and remove submarine-site --- dev-support/mini-submarine/conf/bootstrap.sh | 18 ++-- .../commons/utils/SubmarineConfVars.java | 87 +++++++++++-------- .../commons/utils/SubmarineConfiguration.java | 28 ------ .../submarine/server/SubmarineServer.java | 3 - 4 files changed, 61 insertions(+), 75 deletions(-) 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-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 725494d79..69def0a4c 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 @@ -77,46 +77,63 @@ public enum ConfVars { FLOAT_TEST("float.test", -123.456f), SUBMARINE_CONF_DIR("submarine.conf.dir", "conf"), 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", + Long.parseLong(System.getenv("SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB"))), + SUBMARINE_SERVER_ADDR("submarine.server.addr", System.getenv("SUBMARINE_SERVER_ADDR")), + SUBMARINE_SERVER_PORT("submarine.server.port", Integer.valueOf(System.getenv("SUBMARINE_SERVER_PORT"))), + SUBMARINE_SERVER_SSL("submarine.server.ssl", Boolean.parseBoolean(System.getenv("SUBMARINE_SERVER_SSL"))), + SUBMARINE_SERVER_SSL_PORT("submarine.server.ssl.port", + Integer.valueOf(System.getenv("SUBMARINE_SERVER_SSL_PORT"))), + SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX("submarine.server.jetty.thread.pool.max", + Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX"))), + SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN("submarine.server.jetty.thread.pool.min", + Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN"))), + SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT("submarine.server.jetty.thread.pool.timeout", + Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT"))), + SUBMARINE_SERVER_JETTY_REQUEST_HEADER_SIZE("submarine.server.jetty.request.header.size", + Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_REQUEST_HEADER_SIZE"))), + SUBMARINE_SERVER_SSL_CLIENT_AUTH("submarine.server.ssl.client.auth", + Boolean.parseBoolean(System.getenv("SUBMARINE_SERVER_SSL_CLIENT_AUTH"))), + SUBMARINE_SERVER_SSL_KEYSTORE_PATH("submarine.server.ssl.keystore.path", + System.getenv("SUBMARINE_SERVER_SSL_KEYSTORE_PATH")), + SUBMARINE_SERVER_SSL_KEYSTORE_TYPE("submarine.server.ssl.keystore.type", + System.getenv("SUBMARINE_SERVER_SSL_KEYSTORE_TYPE")), + SUBMARINE_SERVER_SSL_KEYSTORE_PASSWORD("submarine.server.ssl.keystore.password", + System.getenv("SUBMARINE_SERVER_SSL_KEYSTORE_PASSWORD")), + SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD("submarine.server.ssl.key.manager.password", + System.getenv("SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD") == "" ? null : + System.getenv("SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD")), + SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH("submarine.server.ssl.truststore.path", + System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH") == "" ? null : + System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH")), + SUBMARINE_SERVER_SSL_TRUSTSTORE_TYPE("submarine.server.ssl.truststore.type", + System.getenv("SUBMARINE_SERVER_SSL_TRUSTST_TYPE") == "" ? null : + System.getenv("SUBMARINE_SERVER_SSL_TRUSTST_TYPE")), + SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD("submarine.server.ssl.truststore.password", + System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD") == "" ? null : + System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD")), + SUBMARINE_CLUSTER_ADDR("submarine.cluster.addr", + System.getenv("SUBMARINE_CLUSTER_ADDR")), SUBMARINE_SERVER_RPC_ENABLED( - "submarine.server.rpc.enabled", false), + "submarine.server.rpc.enabled", + Boolean.parseBoolean(System.getenv("SUBMARINE_SERVER_RPC_ENABLED"))), SUBMARINE_SERVER_RPC_PORT( "submarine.server.rpc.port", 8980), - CLUSTER_HEARTBEAT_INTERVAL("cluster.heartbeat.interval", 3000), - CLUSTER_HEARTBEAT_TIMEOUT("cluster.heartbeat.timeout", 9000), + CLUSTER_HEARTBEAT_INTERVAL("cluster.heartbeat.interval", + Integer.valueOf(System.getenv("CLUSTER_HEARTBEAT_INTERVAL"))), + CLUSTER_HEARTBEAT_TIMEOUT("cluster.heartbeat.timeout", + Integer.valueOf(System.getenv("CLUSTER_HEARTBEAT_TIMEOUT"))), - 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"), + JDBC_DRIVERCLASSNAME("jdbc.driverClassName", System.getenv("JDBC_DRIVERCLASSNAME")), + JDBC_URL("jdbc.url", System.getenv("JDBC_URL")), + JDBC_USERNAME("jdbc.username", System.getenv("JDBC_USERNAME")), + JDBC_PASSWORD("jdbc.password", System.getenv("JDBC_PASSWORD")), + METASTORE_JDBC_URL("metastore.jdbc.url", System.getenv("METASTORE_JDBC_URL")), + METASTORE_JDBC_USERNAME("metastore.jdbc.username", System.getenv("METASTORE_JDBC_USERNAME")), + METASTORE_JDBC_PASSWORD("metastore.jdbc.password", System.getenv("METASTORE_JDBC_PASSWORD")), - SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON("submarine.notebook.default.overwrite_json", ""), + SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON("submarine.notebook.default.overwrite_json", + System.getenv("SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON")), WORKBENCH_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE( "workbench.websocket.max.text.message.size", "1024000"), 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 4d8ebb182..7020af923 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,17 +19,13 @@ 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 { @@ -42,26 +38,6 @@ public class SubmarineConfiguration extends XMLConfiguration { 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) { @@ -129,10 +105,6 @@ public static SubmarineConfiguration getInstance() { // return submarineConfig; // } - // Debug - public int getTestConfig() { - return getInt(SubmarineConfVars.ConfVars.TEST_CONFIG); - } 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 0f355d89d..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 @@ -80,9 +80,6 @@ public static long getServerTimeStamp() { public static void main(String[] args) throws InterruptedException { PropertyConfigurator.configure(ClassLoader.getSystemResource("log4j.properties")); - - // Debug - LOG.info("Test config message:" + conf.getTestConfig()); LOG.info("Submarine server Host: " + conf.getServerAddress()); if (!conf.useSsl()) { From f7ffda5cc752f4703b2de4bf07886806922a9c77 Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Sun, 12 Jun 2022 22:12:02 +0800 Subject: [PATCH 11/13] SUBMARINE-1261. Fix start-submarine.sh bug --- .github/scripts/start-submarine.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/scripts/start-submarine.sh b/.github/scripts/start-submarine.sh index 8a5d22a1b..32366b516 100644 --- a/.github/scripts/start-submarine.sh +++ b/.github/scripts/start-submarine.sh @@ -30,8 +30,7 @@ kubectl create namespace submarine kubectl create namespace "$submarine_user_namespace" kubectl label namespace submarine istio-injection=enabled kubectl label namespace "$submarine_user_namespace" istio-injection=enabled -kubectl apply -n submarine-user-test -f ./submarine-cloud-v2/artifacts/submarine/submarine-server.yaml # For github action -kubectl apply +kubectl apply -f ./submarine-cloud-v2/artifacts/submarine/submarine-server.yaml -n "$submarine_user_namespace" # For github action 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" From d6ef37cb8c3c1ed4b8e626058e1918c7cc51f3bd Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Mon, 13 Jun 2022 15:44:28 +0800 Subject: [PATCH 12/13] SUBMARINE-1261. Fix start-submarine.sh bug --- .github/scripts/start-submarine.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/start-submarine.sh b/.github/scripts/start-submarine.sh index 32366b516..202dd0a84 100644 --- a/.github/scripts/start-submarine.sh +++ b/.github/scripts/start-submarine.sh @@ -30,9 +30,9 @@ kubectl create namespace submarine kubectl create namespace "$submarine_user_namespace" kubectl label namespace submarine istio-injection=enabled kubectl label namespace "$submarine_user_namespace" istio-injection=enabled -kubectl apply -f ./submarine-cloud-v2/artifacts/submarine/submarine-server.yaml -n "$submarine_user_namespace" # For github action 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" # For github action # Polling waiting for the submarine to be in the RUNNING state for ((i=0;i<$wait_times;++i)); do From 609dd2b427017e816050dd36cb6ee8e753bcb4b1 Mon Sep 17 00:00:00 2001 From: Ray02250418 Date: Sun, 19 Jun 2022 23:46:53 +0800 Subject: [PATCH 13/13] SUBMARINE-1261. Remove unused code --- .github/scripts/start-submarine.sh | 2 +- .../artifacts/submarine/submarine-server.yaml | 1 - .../commons/utils/SubmarineConfVars.java | 170 ------------------ .../commons/utils/SubmarineConfiguration.java | 35 ---- 4 files changed, 1 insertion(+), 207 deletions(-) diff --git a/.github/scripts/start-submarine.sh b/.github/scripts/start-submarine.sh index 202dd0a84..831fd1fca 100644 --- a/.github/scripts/start-submarine.sh +++ b/.github/scripts/start-submarine.sh @@ -32,7 +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" # For github action +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/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml index 274f48e61..d10f16322 100644 --- a/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml +++ b/submarine-cloud-v2/artifacts/submarine/submarine-server.yaml @@ -49,7 +49,6 @@ kind: ConfigMap metadata: name: submarine-config data: - float.test: "-123.456" SUBMARINE_SERVER_PORT: "8080" SUBMARINE_SERVER_PORT_8080_TCP: "8080" K8S_APISERVER_URL: "kubernetes.default.svc" 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 69def0a4c..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 @@ -25,7 +25,6 @@ public class SubmarineConfVars { private static final Logger LOG = LoggerFactory.getLogger(SubmarineConfVars.class); public enum ConfVars { - FLOAT_TEST("float.test", VarType.FLOAT), SUBMARINE_CONF_DIR("submarine.conf.dir", VarType.STRING), SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB( "submarine.localization.max-allowed-file-size-mb", VarType.LONG), @@ -66,85 +65,11 @@ public enum ConfVars { WORKBENCH_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE( "workbench.websocket.max.text.message.size", VarType.STRING), WORKBENCH_WEB_WAR("workbench.web.war", VarType.STRING), - SUBMARINE_RUNTIME_CLASS("submarine.runtime.class", - "org.apache.submarine.server.submitter.yarn.YarnRuntimeFactory"), 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); - /* - FLOAT_TEST("float.test", -123.456f), - SUBMARINE_CONF_DIR("submarine.conf.dir", "conf"), - SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB( - "submarine.localization.max-allowed-file-size-mb", - Long.parseLong(System.getenv("SUBMARINE_LOCALIZATION_MAX_ALLOWED_FILE_SIZE_MB"))), - SUBMARINE_SERVER_ADDR("submarine.server.addr", System.getenv("SUBMARINE_SERVER_ADDR")), - SUBMARINE_SERVER_PORT("submarine.server.port", Integer.valueOf(System.getenv("SUBMARINE_SERVER_PORT"))), - SUBMARINE_SERVER_SSL("submarine.server.ssl", Boolean.parseBoolean(System.getenv("SUBMARINE_SERVER_SSL"))), - SUBMARINE_SERVER_SSL_PORT("submarine.server.ssl.port", - Integer.valueOf(System.getenv("SUBMARINE_SERVER_SSL_PORT"))), - SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX("submarine.server.jetty.thread.pool.max", - Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_THREAD_POOL_MAX"))), - SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN("submarine.server.jetty.thread.pool.min", - Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_THREAD_POOL_MIN"))), - SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT("submarine.server.jetty.thread.pool.timeout", - Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_THREAD_POOL_TIMEOUT"))), - SUBMARINE_SERVER_JETTY_REQUEST_HEADER_SIZE("submarine.server.jetty.request.header.size", - Integer.valueOf(System.getenv("SUBMARINE_SERVER_JETTY_REQUEST_HEADER_SIZE"))), - SUBMARINE_SERVER_SSL_CLIENT_AUTH("submarine.server.ssl.client.auth", - Boolean.parseBoolean(System.getenv("SUBMARINE_SERVER_SSL_CLIENT_AUTH"))), - SUBMARINE_SERVER_SSL_KEYSTORE_PATH("submarine.server.ssl.keystore.path", - System.getenv("SUBMARINE_SERVER_SSL_KEYSTORE_PATH")), - SUBMARINE_SERVER_SSL_KEYSTORE_TYPE("submarine.server.ssl.keystore.type", - System.getenv("SUBMARINE_SERVER_SSL_KEYSTORE_TYPE")), - SUBMARINE_SERVER_SSL_KEYSTORE_PASSWORD("submarine.server.ssl.keystore.password", - System.getenv("SUBMARINE_SERVER_SSL_KEYSTORE_PASSWORD")), - SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD("submarine.server.ssl.key.manager.password", - System.getenv("SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD") == "" ? null : - System.getenv("SUBMARINE_SERVER_SSL_KEY_MANAGER_PASSWORD")), - SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH("submarine.server.ssl.truststore.path", - System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH") == "" ? null : - System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PATH")), - SUBMARINE_SERVER_SSL_TRUSTSTORE_TYPE("submarine.server.ssl.truststore.type", - System.getenv("SUBMARINE_SERVER_SSL_TRUSTST_TYPE") == "" ? null : - System.getenv("SUBMARINE_SERVER_SSL_TRUSTST_TYPE")), - SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD("submarine.server.ssl.truststore.password", - System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD") == "" ? null : - System.getenv("SUBMARINE_SERVER_SSL_TRUSTSTORE_PASSWORD")), - SUBMARINE_CLUSTER_ADDR("submarine.cluster.addr", - System.getenv("SUBMARINE_CLUSTER_ADDR")), - SUBMARINE_SERVER_RPC_ENABLED( - "submarine.server.rpc.enabled", - Boolean.parseBoolean(System.getenv("SUBMARINE_SERVER_RPC_ENABLED"))), - SUBMARINE_SERVER_RPC_PORT( - "submarine.server.rpc.port", 8980), - CLUSTER_HEARTBEAT_INTERVAL("cluster.heartbeat.interval", - Integer.valueOf(System.getenv("CLUSTER_HEARTBEAT_INTERVAL"))), - CLUSTER_HEARTBEAT_TIMEOUT("cluster.heartbeat.timeout", - Integer.valueOf(System.getenv("CLUSTER_HEARTBEAT_TIMEOUT"))), - - JDBC_DRIVERCLASSNAME("jdbc.driverClassName", System.getenv("JDBC_DRIVERCLASSNAME")), - JDBC_URL("jdbc.url", System.getenv("JDBC_URL")), - JDBC_USERNAME("jdbc.username", System.getenv("JDBC_USERNAME")), - JDBC_PASSWORD("jdbc.password", System.getenv("JDBC_PASSWORD")), - METASTORE_JDBC_URL("metastore.jdbc.url", System.getenv("METASTORE_JDBC_URL")), - METASTORE_JDBC_USERNAME("metastore.jdbc.username", System.getenv("METASTORE_JDBC_USERNAME")), - METASTORE_JDBC_PASSWORD("metastore.jdbc.password", System.getenv("METASTORE_JDBC_PASSWORD")), - - SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON("submarine.notebook.default.overwrite_json", - System.getenv("SUBMARINE_NOTEBOOK_DEFAULT_OVERWRITE_JSON")), - - 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"); - */ private String varName; @SuppressWarnings("rawtypes") private Class varClass; @@ -220,101 +145,6 @@ public enum ConfVars { LOG.info(varName + ": Using new constructor!!!"); } - ConfVars(String varName, String varValue) { - this.varName = varName; - this.varClass = String.class; - this.stringValue = (varValue == null ? "" : varValue); - String stringValueFromEnv = System.getenv(varName); - if (this.stringValue.equals(stringValueFromEnv)) { - LOG.info(varName + ": Equal"); - } else { - LOG.info("--------------- Error ---------------"); - LOG.info(varName + ": " + this.stringValue + " != " + stringValueFromEnv); - LOG.info("-------------------------------------"); - } - 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; - int intValueFromEnv = Integer.valueOf(System.getenv(varName)); - if (this.intValue == intValueFromEnv) { - LOG.info(varName + ": Equal"); - } else { - LOG.info("--------------- Error ---------------"); - LOG.info(varName + ": " + this.intValue + " != " + intValueFromEnv); - LOG.info("-------------------------------------"); - } - 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; - long longValueFromEnv = Long.parseLong(System.getenv(varName), 10); - if (this.longValue == longValueFromEnv) { - LOG.info(varName + ": Equal"); - } else { - LOG.info("--------------- Error ---------------"); - LOG.info(varName + ": " + this.longValue + " != " + longValueFromEnv); - LOG.info("-------------------------------------"); - } - 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; - float floatValueFromEnv = Float.parseFloat(System.getenv(varName)); - if (this.floatValue == floatValueFromEnv) { - LOG.info(varName + ": Equal"); - } else { - LOG.info("--------------- Error ---------------"); - LOG.info(varName + ": " + this.floatValue + " != " + floatValueFromEnv); - LOG.info("-------------------------------------"); - } - 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; - boolean booleanValueFromEnv = Boolean.parseBoolean(System.getenv(varName)); - if (this.booleanValue == booleanValueFromEnv) { - LOG.info(varName + ": Equal"); - } else { - LOG.info("--------------- Error ---------------"); - LOG.info(varName + ": " + this.booleanValue + " != " + booleanValueFromEnv); - LOG.info("-------------------------------------"); - } - this.type = VarType.BOOLEAN; - } - public String getVarName() { return varName; } 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 7020af923..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 @@ -71,41 +71,6 @@ public static SubmarineConfiguration getInstance() { 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); }