You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@submarine.apache.org by li...@apache.org on 2020/03/08 03:22:55 UTC

[submarine] branch master updated: SUBMARINE-406. optimize travis

This is an automated email from the ASF dual-hosted git repository.

liuxun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new 33a1659  SUBMARINE-406. optimize travis
33a1659 is described below

commit 33a165950b7cff23fb1be69674011136a99fc98e
Author: Xun Liu <li...@apache.org>
AuthorDate: Fri Mar 6 16:35:54 2020 +0800

    SUBMARINE-406. optimize travis
    
    ### What is this PR for?
    1. Test cases are not fully covered in travis, and there is a problem of repeated tests. So we need to optimize and refactor travis test cases.
    2. Remove duplicate testing tasks in travis.
    3. Reduced test task time in travis.
    
    ### What type of PR is it?
    [Improvement | Refactoring]
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/SUBMARINE-406
    
    ### How should this be tested?
    * https://travis-ci.org/liuxunorg/submarine/builds/659562164
    
    ### Screenshots (if appropriate)
    ![image](https://user-images.githubusercontent.com/3677382/76154902-1c021380-611f-11ea-8298-7880a3cda7bb.png)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Xun Liu <li...@apache.org>
    
    Closes #207 from liuxunorg/SUBMARINE-406 and squashes the following commits:
    
    fba7d8c [Xun Liu] SUBMARINE-406. optimize travis
---
 .travis.yml                                        | 150 ++++++++++++---------
 submarine-server/server-core/pom.xml               |   2 +-
 .../server-submitter/submitter-k8s/pom.xml         |   2 +-
 .../server-submitter/submitter-yarn/pom.xml        |   4 +-
 4 files changed, 92 insertions(+), 66 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 6e11546..e6266b9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -43,13 +43,20 @@ services:
 env:
   global:
     # If you need to compile Phadoop-3.1 or Phadoop-3.2, you need to add `!submarine-server/server-submitter/submitter-yarnservice` in EXCLUDE_SUBMARINE
-    - EXCLUDE_SUBMARINE="!submarine-all,!submarine-client,!submarine-commons,!submarine-commons/commons-runtime,!submarine-dist,!submarine-server/server-submitter/submitter-yarn,!submarine-server/server-core,!submarine-server/server-rpc"
-    - EXCLUDE_WORKBENCH="!submarine-workbench,!submarine-workbench/workbench-web,!submarine-workbench/workbench-web-ng"
+    - SUBMARINE="org.apache.submarine"
+    - EXCLUDE_SUBMARINE="!${SUBMARINE}:submarine-all,!${SUBMARINE}:submarine-client,!${SUBMARINE}:submarine-dist"
+    - EXCLUDE_SERVER="!${SUBMARINE}:server-api,!${SUBMARINE}:server-core,!${SUBMARINE}:server-rpc"
+    - EXCLUDE_CLIENT="!${SUBMARINE}:submarine-client"
+    - EXCLUDE_ALL="!${SUBMARINE}:submarine-all"
+    - EXCLUDE_WORKBENCH="!${SUBMARINE}:submarine-workbench,!${SUBMARINE}:workbench-web,!${SUBMARINE}:workbench-web-ng"
     - EXCLUDE_INTERPRETER="" # Template disable by SUBMARINE-381 "!submarine-workbench/interpreter,!submarine-workbench/interpreter/interpreter-engine,!submarine-workbench/interpreter/python-interpreter,!submarine-workbench/interpreter/spark-interpreter
-    - EXCLUDE_K8S="!submarine-server/server-submitter/submitter-k8s"
-    - EXCLUDE_COMMON_RPC="!submarine-commons/commons-rpc"
-    - EXCLUDE_COMMONS="${EXCLUDE_COMMON_RPC},!submarine-commons/commons-utils,!submarine-commons/commons-cluster,!submarine-commons/commons-runtime,!submarine-commons/commons-metastore"
-    - EXCLUDE_CLOUD="!org.apache.submarine:submarine-cloud"
+    - EXCLUDE_SUBMITTER_K8S="!${SUBMARINE}:submitter-k8s"
+    - EXCLUDE_SUBMITTER_YARN="!${SUBMARINE}:submitter-yarn"
+    - EXCLUDE_SUBMITTER="!${SUBMARINE}:server-submitter,${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_SUBMITTER_YARN}"
+    - EXCLUDE_COMMONS="!${SUBMARINE}:commons-cluster,!${SUBMARINE}:commons-metastore,!${SUBMARINE}:commons-rpc,!${SUBMARINE}:commons-runtime,!${SUBMARINE}:commons-utils"
+    - EXCLUDE_CLOUD="!${SUBMARINE}:submarine-cloud"
+    - EXCLUDE_DIST="!${SUBMARINE}:submarine-dist"
+    - EXCLUDE_TEST="!${SUBMARINE}:submarine-test,!${SUBMARINE}:test-e2e,!${SUBMARINE}:test-k8s"
     - MOZ_HEADLESS=1
 
 before_install:
@@ -96,31 +103,81 @@ matrix:
       dist: xenial
       env: PROFILE="" BUILD_FLAG="clean" TEST_FLAG="org.apache.rat:apache-rat-plugin:check" TEST_PROJECTS=""
 
-    - name: Build submarine submitter on hadoop-2.9 (default)
+    - name: Test submarine test-k8s
+      dist: xenial
+      services: docker
+      language: java
+      jdk: openjdk8
+      addons:
+        chrome: stable
+        firefox: latest
+      # Because submarine on k8s uses port 80, it needs to be set `-Durl=http://127.0.0.1`
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="verify -DskipRat -am -Durl=http://127.0.0.1" MODULES="" TEST_MODULES="-pl ${EXCLUDE_SERVER},${EXCLUDE_COMMONS},${EXCLUDE_CLIENT},org.apache.submarine:test-k8s" TEST_PROJECTS=""
+
+    - name: Test submarine test-e2e
+      language: java
+      jdk: openjdk8
+      dist: xenial
+      addons:
+        chrome: stable
+        firefox: latest
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="verify -DskipRat -am" TEST_MODULES="-pl org.apache.submarine:test-e2e" TEST_PROJECTS=""
+
+    - name: Test submarine commons-cluster
+      language: java
+      jdk: openjdk8
+      dist: xenial
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_COMMONS},${EXCLUDE_SUBMITTER},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLIENT},${EXCLUDE_CLOUD},${EXCLUDE_SERVER},${EXCLUDE_ALL},${EXCLUDE_DIST},${EXCLUDE_TEST}" TEST_MODULES="-pl org.apache.submarine:commons-cluster" TEST_PROJECTS=""
+
+    - name: Test submarine commons-metastore
       language: java
       jdk: openjdk8
       dist: xenial
-      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat" MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},!submarine-dist" TEST_MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMON_RPC},!submarine-dist" TEST_PROJECTS=""
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_COMMONS},${EXCLUDE_SUBMITTER},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLIENT},${EXCLUDE_CLOUD},${EXCLUDE_SERVER},${EXCLUDE_ALL},${EXCLUDE_DIST},${EXCLUDE_TEST}" TEST_MODULES="-pl org.apache.submarine:commons-metastore" TEST_PROJECTS=""
 
-    - name: Build submarine submitter on hadoop-2.10
+    - name: Test submarine commons-rpc
       language: java
       jdk: openjdk8
       dist: xenial
-      env: PROFILE="-Phadoop-2.10" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat" MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},!submarine-dist" TEST_MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMON_RPC},!submarine-dist" TEST_PROJECTS=""
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_COMMONS},${EXCLUDE_SUBMITTER},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLIENT},${EXCLUDE_CLOUD},${EXCLUDE_SERVER},${EXCLUDE_ALL},${EXCLUDE_DIST},${EXCLUDE_TEST}" TEST_MODULES="-pl org.apache.submarine:commons-rpc" TEST_PROJECTS=""
 
-    - name: Build submarine submitter on hadoop-3.1
+    - name: Test submarine commons-runtime
       language: java
       jdk: openjdk8
       dist: xenial
-      env: PROFILE="-Phadoop-3.1" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat" MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},!submarine-dist" TEST_MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMON_RPC},!submarine-dist" TEST_PROJECTS=""
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_COMMONS},${EXCLUDE_SUBMITTER},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLIENT},${EXCLUDE_CLOUD},${EXCLUDE_SERVER},${EXCLUDE_ALL},${EXCLUDE_DIST},${EXCLUDE_TEST}" TEST_MODULES="-pl org.apache.submarine:commons-runtime" TEST_PROJECTS=""
 
-    - name: Build submarine submitter on hadoop-3.2
+    - name: Test submarine server
       language: java
       jdk: openjdk8
       dist: xenial
-      env: PROFILE="-Phadoop-3.2" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat" MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},!submarine-dist" TEST_MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMON_RPC},!submarine-dist" TEST_PROJECTS=""
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_ALL},${EXCLUDE_DIST},${EXCLUDE_TEST}" TEST_MODULES="-pl ${EXCLUDE_COMMONS},org.apache.submarine:server-core" TEST_PROJECTS=""
 
-    - name: Build submarine submitter on Kubernetes
+    - name: Test submarine submitter on hadoop-2.9 (default)
+      language: java
+      jdk: openjdk8
+      dist: xenial
+      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_DIST}" TEST_MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMONS},${EXCLUDE_DIST},${EXCLUDE_TEST},${EXCLUDE_ALL},${EXCLUDE_SERVER}" TEST_PROJECTS=""
+
+    - name: Test submarine submitter on hadoop-2.10
+      language: java
+      jdk: openjdk8
+      dist: xenial
+      env: PROFILE="-Phadoop-2.10" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_DIST}" TEST_MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMONS},${EXCLUDE_DIST},${EXCLUDE_TEST},${EXCLUDE_ALL},${EXCLUDE_SERVER}" TEST_PROJECTS=""
+
+    - name: Test submarine submitter on hadoop-3.1
+      language: java
+      jdk: openjdk8
+      dist: xenial
+      env: PROFILE="-Phadoop-3.1" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_DIST}" TEST_MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMONS},${EXCLUDE_DIST},${EXCLUDE_TEST},${EXCLUDE_ALL},${EXCLUDE_SERVER}" TEST_PROJECTS=""
+
+    - name: Test submarine submitter on hadoop-3.2
+      language: java
+      jdk: openjdk8
+      dist: xenial
+      env: PROFILE="-Phadoop-3.2" BUILD_FLAG="clean package install -DskipTests -DskipRat" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_DIST}" TEST_MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER},${EXCLUDE_CLOUD},${EXCLUDE_COMMONS},${EXCLUDE_DIST},${EXCLUDE_TEST},${EXCLUDE_ALL},${EXCLUDE_SERVER}" TEST_PROJECTS=""
+
+    - name: Test submarine submitter on Kubernetes
       dist: xenial
       services: docker
       language: java
@@ -146,46 +203,14 @@ matrix:
         - kubectl apply -f ./dev-support/travis/tf-operator/crd_v1.yaml
         - kubectl apply -f ./dev-support/travis/tf-operator/tfevent-volume/.
 
-    - name: Build submarine workbench-web VUE
-      language: node_js
-      node_js:
-        - 10.15.0
-      before_install:
-        - cd submarine-workbench/workbench-web
-      install:
-        - yarn install
-      script:
-        - yarn
-        - yarn run lint --no-fix && yarn run build
-      env: NAME="Build workbench-web"
-
-    - name: Test submarine test-e2e
-      language: java
-      jdk: openjdk8
-      dist: xenial
-      addons:
-        chrome: stable
-        firefox: latest
-      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="verify -DskipRat -am" TEST_MODULES="-pl submarine-test/test-e2e" TEST_PROJECTS=""
-
-    - name: Test submarine-test-k8s
-      dist: xenial
-      services: docker
-      language: java
-      jdk: openjdk8
-      addons:
-        chrome: stable
-      # Because submarine on k8s uses port 80, it needs to be set `-Durl=http://127.0.0.1`
-      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="verify -DskipRat -am -Durl=http://127.0.0.1" MODULES="" TEST_MODULES="-pl ${EXCLUDE_COMMONS},!org.apache.submarine:submarine-client,!org.apache.submarine:submitter-yarn,!org.apache.submarine:server-api,!org.apache.submarine:server-rpc,!org.apache.submarine:server-core,submarine-test/test-k8s" TEST_PROJECTS=""
-
     # Template disable by SUBMARINE-381
     #- name: Test submarine interpreter
     #  language: java
     #  jdk: "openjdk8"
     #  dist: xenial
-    #  env: PYTHON="3" PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_SUBMARINE},${EXCLUDE_WORKBENCH}" TEST_MODULES="-pl $(echo ${EXCLUDE_INTERPRETER} | sed 's/!//g')" TEST_PROJECTS=""
+    #  env: PYTHON="3" PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl ${EXCLUDE_SUBMITTER_K8S},${EXCLUDE_SUBMARINE},${EXCLUDE_WORKBENCH}" TEST_MODULES="-pl $(echo ${EXCLUDE_INTERPRETER} | sed 's/!//g')" TEST_PROJECTS=""
 
-    - name: Test submarine-sdk
+    - name: Test submarine sdk
       language: python
       python: 3.6
       dist: xenial
@@ -197,11 +222,18 @@ matrix:
         - ./submarine-sdk/pysubmarine/travis/lint.sh
         - pytest --cov=submarine -vs
 
-    - name: Test submarine distribution
-      language: java
-      jdk: openjdk8
-      dist: xenial
-      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat" MODULES="-pl ${EXCLUDE_K8S}" TEST_MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_COMMON_RPC}" TEST_PROJECTS=""
+    - name: Test submarine workbench-web VUE
+      language: node_js
+      node_js:
+        - 10.15.0
+      before_install:
+        - cd submarine-workbench/workbench-web
+      install:
+        - yarn install
+      script:
+        - yarn
+        - yarn run lint --no-fix && yarn run build
+      env: NAME="Build workbench-web"
 
     - name: Test submarine workbench-web Angular
       language: node_js
@@ -221,15 +253,9 @@ matrix:
         - npm run e2e -- --protractor-config=e2e/protractor-ci.conf.js
       env: BUILD_FLAG="clean package -DskipTests" TEST_FLAG="test -DskipRat -am" MODULES="-pl org.apache.submarine:workbench-web-ng" TEST_MODULES="-pl org.apache.submarine:workbench-web-ng" TEST_PROJECTS=""
 
-    - name: Test submarine-server
-      language: java
-      jdk: openjdk8
-      dist: xenial
-      env: PROFILE="-Phadoop-2.9" BUILD_FLAG="clean package install -DskipTests" TEST_FLAG="test -DskipRat" MODULES="-pl ${EXCLUDE_K8S},${EXCLUDE_WORKBENCH},${EXCLUDE_INTERPRETER}" TEST_MODULES="-pl org.apache.submarine:server-core" TEST_PROJECTS=""
-
 install:
   - mvn --version
-  - echo "install-> mvn $BUILD_FLAG $MODULES $PROFILE -B"
+  - echo ">>> mvn $BUILD_FLAG $MODULES $PROFILE -B"
   - mvn $BUILD_FLAG $MODULES $PROFILE -B
 
 before_script:
@@ -238,7 +264,7 @@ before_script:
 
 script:
   - if [[ -n $TEST_MODULES ]]; then export MODULES="${TEST_MODULES}"; fi
-  - echo "script-> mvn $TEST_FLAG $MODULES $PROFILE -B $TEST_PROJECTS"
+  - echo ">>> mvn $TEST_FLAG $MODULES $PROFILE -B $TEST_PROJECTS"
   - mvn $TEST_FLAG $MODULES $PROFILE -B $TEST_PROJECTS
 
 after_success:
diff --git a/submarine-server/server-core/pom.xml b/submarine-server/server-core/pom.xml
index 4cd27b3..a9dc861 100644
--- a/submarine-server/server-core/pom.xml
+++ b/submarine-server/server-core/pom.xml
@@ -405,7 +405,7 @@
   </dependencies>
 
   <build>
-    <finalName>submarine-${artifactId}-${project.version}</finalName>
+    <finalName>submarine-${project.artifactId}-${project.version}</finalName>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/submarine-server/server-submitter/submitter-k8s/pom.xml b/submarine-server/server-submitter/submitter-k8s/pom.xml
index eabf49c..1181eee 100644
--- a/submarine-server/server-submitter/submitter-k8s/pom.xml
+++ b/submarine-server/server-submitter/submitter-k8s/pom.xml
@@ -65,7 +65,7 @@
   </dependencies>
 
   <build>
-    <finalName>submarine-${artifactId}-${project.version}</finalName>
+    <finalName>submarine-${project.artifactId}-${project.version}</finalName>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/submarine-server/server-submitter/submitter-yarn/pom.xml b/submarine-server/server-submitter/submitter-yarn/pom.xml
index d1b90e8..49faede 100644
--- a/submarine-server/server-submitter/submitter-yarn/pom.xml
+++ b/submarine-server/server-submitter/submitter-yarn/pom.xml
@@ -329,7 +329,7 @@
   </profiles>
 
   <build>
-    <finalName>submarine-${artifactId}-${project.version}</finalName>
+    <finalName>submarine-${project.artifactId}-${project.version}</finalName>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -342,7 +342,7 @@
               <goal>shade</goal>
             </goals>
             <configuration>
-              <outputFile>target/submarine-${artifactId}-${project.version}-shade.jar</outputFile>
+              <outputFile>target/submarine-${project.artifactId}-${project.version}-shade.jar</outputFile>
               <filters>
                 <filter>
                   <artifact>*:*</artifact>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@submarine.apache.org
For additional commands, e-mail: dev-help@submarine.apache.org