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

jin pushed a commit to branch docker-1.0.0
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph.git


The following commit(s) were added to refs/heads/docker-1.0.0 by this push:
     new 7a085ff08 refact: use a slim way to build docker image on latest code 
& support zgc (#2118) (#2297)
7a085ff08 is described below

commit 7a085ff089ce1c3cd77d8d1e29fbabea5632d0f0
Author: Dandelion <[email protected]>
AuthorDate: Sat Aug 26 16:55:46 2023 +0800

    refact: use a slim way to build docker image on latest code & support zgc 
(#2118) (#2297)
    
    * also modify shell
    
    Co-authored-by: imbajin <[email protected]>
---
 Dockerfile                                         | 64 ++++++++++------------
 README.md                                          | 41 ++++++++++----
 .../src/assembly/static/bin/hugegraph-server.sh    | 42 ++++++++------
 .../src/assembly/static/bin/init-store.sh          | 22 ++++----
 .../src/assembly/static/bin/start-hugegraph.sh     | 42 ++++++++------
 hugegraph-dist/src/assembly/travis/run-api-test.sh |  6 +-
 6 files changed, 123 insertions(+), 94 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index c94f0bbf9..e096f3430 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -15,54 +15,46 @@
 # limitations under the License.
 #
 
-FROM ubuntu:xenial
+# Dockerfile for HugeGraph Server
+# 1st stage: build source code
+FROM maven:3.9.0-eclipse-temurin-11 AS build
 
-LABEL maintainer="HugeGraph Docker Maintainers <[email protected]>"
+COPY . /pkg
+WORKDIR /pkg
+RUN mvn package -e -B -ntp -DskipTests -Dmaven.javadoc.skip=true && pwd && ls 
-l
 
-ENV PKG_URL https://github.com/hugegraph
+# 2nd stage: runtime env
+FROM openjdk:11-slim
+# TODO: get the version from the pom.xml
+ENV version=1.0.0
+COPY --from=build /pkg/apache-hugegraph-incubating-$version/ /hugegraph
+LABEL maintainer="HugeGraph Docker Maintainers <[email protected]>"
 
-# 1. Install needed dependencies of GraphServer & RocksDB
+# TODO: use g1gc or zgc as default
+ENV JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseContainerSupport 
-XX:MaxRAMPercentage=50 -XshowSettings:vm"
+
+#COPY . /hugegraph/hugegraph-server
+WORKDIR /hugegraph/
+
+# 1. Install environment
 RUN set -x \
     && apt-get -q update \
     && apt-get -q install -y --no-install-recommends --no-install-suggests \
+       dumb-init \
+       procps \
        curl \
        lsof \
-       g++ \
-       gcc \
-       openjdk-8-jdk \
-    && apt-get clean
-    # && rm -rf /var/lib/apt/lists/*
+    && apt-get clean \
+    && rm -rf /var/lib/apt/lists/*
 
 # 2. Init HugeGraph Sever
-# (Optional) You can set the ip of github to speed up the local build
-# && echo "192.30.253.112 github.com\n151.101.44.249 
github.global.ssl.fastly.net" >> /etc/hosts \
-ENV SERVER_VERSION 0.12.0
 RUN set -e \
-    && mkdir -p /root/hugegraph-server \
-    && curl -L -S 
${PKG_URL}/hugegraph/releases/download/v${SERVER_VERSION}/hugegraph-${SERVER_VERSION}.tar.gz
 -o /root/server.tar.gz \
-    && tar xzf /root/server.tar.gz --strip-components 1 -C 
/root/hugegraph-server \
-    && rm /root/server.tar.gz \
-    && cd /root/hugegraph-server/ \
+    && pwd && cd /hugegraph/ \
     && sed -i "s/^restserver.url.*$/restserver.url=http:\/\/0.0.0.0:8080/g" 
./conf/rest-server.properties \
-    && sed -n '65p' ./bin/start-hugegraph.sh | grep "&" > /dev/null && sed -i 
65{s/\&$/#/g} ./bin/start-hugegraph.sh \
-    && sed -n '75p' ./bin/start-hugegraph.sh | grep "exit" > /dev/null && sed 
-i 75{s/^/#/g} ./bin/start-hugegraph.sh \
     && ./bin/init-store.sh
 
-# 3. Prepare for HugeGraph Studio
-ENV STUDIO_VERSION 0.10.0
-# (Optional) You can set the ip of github to speed up the local build
-# && echo "192.30.253.112 github.com\n151.101.44.249 
github.global.ssl.fastly.net" >> /etc/hosts \
-RUN set -e \
-    && mkdir -p /root/hugegraph-studio \
-    && curl -L -S 
${PKG_URL}/hugegraph-studio/releases/download/v${STUDIO_VERSION}/hugegraph-studio-${STUDIO_VERSION}.tar.gz
 -o /root/studio.tar.gz \
-    && tar xzf /root/studio.tar.gz --strip-components 1 -C 
/root/hugegraph-studio \
-    && rm /root/studio.tar.gz \
-    && cd /root/hugegraph-studio/ \
-    && sed -i "s/^studio.server.host.*$/studio.server.host=0.0.0.0/g" 
./conf/hugegraph-studio.properties \
-    && sed -i "s/^graph.server.host.*$/graph.server.host=0.0.0.0/g" 
./conf/hugegraph-studio.properties
-
-EXPOSE 8080 8088
-WORKDIR /root
-VOLUME /root
+EXPOSE 8080
+VOLUME /hugegraph
 
-ENTRYPOINT ["./hugegraph-server/bin/start-hugegraph.sh"]
+ENTRYPOINT ["/usr/bin/dumb-init", "--"]
+CMD ["./bin/start-hugegraph.sh", "-d false -j $JAVA_OPTS -g zgc"]
diff --git a/README.md b/README.md
index d0a551f06..4a758c349 100644
--- a/README.md
+++ b/README.md
@@ -12,25 +12,44 @@
 
[![Codecov](https://codecov.io/gh/hugegraph/hugegraph/branch/master/graph/badge.svg)](https://codecov.io/gh/hugegraph/hugegraph)
 [![GitHub Releases 
Downloads](https://img.shields.io/github/downloads/hugegraph/hugegraph/total.svg)](https://github.com/hugegraph/hugegraph/releases)
 
-[HugeGraph](https://hugegraph.apache.org/) is a fast-speed and highly-scalable 
[graph database](https://en.wikipedia.org/wiki/Graph_database). Billions of 
vertices and edges can be easily stored into and queried from HugeGraph due to 
its excellent OLTP ability. As compliance to [Apache TinkerPop 
3](https://tinkerpop.apache.org/) framework, various complicated graph queries 
can be accomplished through 
[Gremlin](https://tinkerpop.apache.org/gremlin.html)(a powerful graph traversal 
language).
+[HugeGraph](https://hugegraph.apache.org/) is a fast-speed and highly-scalable 
[graph database](https://en.wikipedia.org/wiki/Graph_database). 
+Billions of vertices and edges can be easily stored into and queried from 
HugeGraph due to its excellent OLTP ability. As compliance to [Apache TinkerPop 
3](https://tinkerpop.apache.org/) framework, various complicated graph queries 
can be accomplished through 
[Gremlin](https://tinkerpop.apache.org/gremlin.html)(a powerful graph traversal 
language).
 
 ## Features
 
-- Compliance to [Apache TinkerPop 3](https://tinkerpop.apache.org/), 
supporting [Gremlin](https://tinkerpop.apache.org/gremlin.html)
+- Compliance to [Apache TinkerPop 3](https://tinkerpop.apache.org/), support 
[Gremlin](https://tinkerpop.apache.org/gremlin.html) & 
[Cypher](https://en.wikipedia.org/wiki/Cypher) language
 - Schema Metadata Management, including VertexLabel, EdgeLabel, PropertyKey 
and IndexLabel
 - Multi-type Indexes, supporting exact query, range query and complex 
conditions combination query
-- Plug-in Backend Store Driver Framework, supporting RocksDB, Cassandra, 
ScyllaDB, HBase and MySQL now and easy to add other backend store driver if 
needed
-- Integration with Hadoop/Spark
+- Plug-in Backend Store Driver Framework, support `RocksDB`, `Cassandra`, 
`HBase`, `ScyllaDB`, and `MySQL/Postgre` now and easy to add other backend 
store driver if needed
+- Integration with `Flink/Spark/HDFS`, and friendly to connect other big data 
platforms
 
-## Getting Started
+## Quick Start
 
-The project [homepage](https://hugegraph.apache.org/docs/) contains more 
information on HugeGraph and provides links to **documentation**, 
getting-started guides and release downloads.
+### 1. Docker Way
 
-And here are links of other repositories:
-1. 
[hugegraph-toolchain](https://github.com/apache/incubator-hugegraph-toolchain) 
(include loader/dashboard/tool/client)
-2. 
[hugegraph-computer](https://github.com/apache/incubator-hugegraph-computer) 
(graph computing system)
-3. [hugegraph-commons](https://github.com/apache/incubator-hugegraph-commons) 
(include common & rpc module)
-4. [hugegraph-website](https://github.com/apache/incubator-hugegraph-doc) 
(include doc & website code)
+We can use `docker run -itd --name=graph -p 8080:8080 hugegraph/hugegraph` to 
quickly start an inner 
+HugeGraph server with `RocksDB` in background.
+
+Optional: use `docker exec -it graph bash` to enter the container to do some 
operations.
+
+### 2. Download Way
+
+Visit [Download Page](https://hugegraph.apache.org/docs/download/download/) 
and refer the 
[doc](https://hugegraph.apache.org/docs/quickstart/hugegraph-server/#33-source-code-compilation)
 
+to download the latest release package and start the server.
+
+### 3. Source Building Way
+
+Visit [Source Building 
Page](https://hugegraph.apache.org/docs/quickstart/hugegraph-server/#33-source-code-compilation)
 and follow the 
+steps to build the source code and start the server.
+
+The project [doc page](https://hugegraph.apache.org/docs/) contains more 
information on HugeGraph
+and provides detailed documentation for users. (Structure / Usage / API / 
Configs...)
+
+And here are links of other **HugeGraph** component/repositories:
+1. 
[hugegraph-toolchain](https://github.com/apache/incubator-hugegraph-toolchain) 
(graph **loader/dashboard/tool/client**)
+2. 
[hugegraph-computer](https://github.com/apache/incubator-hugegraph-computer) 
(matched **graph computing** system)
+3. [hugegraph-commons](https://github.com/apache/incubator-hugegraph-commons) 
(**common & rpc** module)
+4. [hugegraph-website](https://github.com/apache/incubator-hugegraph-doc) 
(**doc & website** code)
 
 ## Contributing
 
diff --git a/hugegraph-dist/src/assembly/static/bin/hugegraph-server.sh 
b/hugegraph-dist/src/assembly/static/bin/hugegraph-server.sh
index 1322623dc..a64398683 100644
--- a/hugegraph-dist/src/assembly/static/bin/hugegraph-server.sh
+++ b/hugegraph-dist/src/assembly/static/bin/hugegraph-server.sh
@@ -15,20 +15,20 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
-abs_path() {
+function abs_path() {
     SOURCE="${BASH_SOURCE[0]}"
-    while [ -h "$SOURCE" ]; do
+    while [[ -h "$SOURCE" ]]; do
         DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
         SOURCE="$(readlink "$SOURCE")"
         [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
     done
-    echo "$(cd -P "$(dirname "$SOURCE")" && pwd)"
+    cd -P "$(dirname "$SOURCE")" && pwd
 }
 
 if [[ $# -lt 3 ]]; then
     echo "USAGE: $0 GREMLIN_SERVER_CONF REST_SERVER_CONF OPEN_SECURITY_CHECK"
     echo " e.g.: $0 conf/gremlin-server.yaml conf/rest-server.properties true"
-    exit 1;
+    exit 1
 fi
 
 BIN=$(abs_path)
@@ -67,8 +67,8 @@ MIN_MEM=$((1 * 512))
 MIN_JAVA_VERSION=8
 
 # download binary file
-if [[ ! -e "${CONF}/hugegraph-server.keystore"  ]]; then
-  download "${CONF}" 
"https://github.com/apache/hugegraph-doc/raw/binary-1.0/dist/server/hugegraph-server.keystore";
+if [[ ! -e "${CONF}/hugegraph-server.keystore" ]]; then
+    download "${CONF}" 
"https://github.com/apache/hugegraph-doc/raw/binary-1.0/dist/server/hugegraph-server.keystore";
 fi
 
 # Add the slf4j-log4j12 binding
@@ -77,8 +77,8 @@ CP=$(find -L $LIB -name 'log4j-slf4j-impl*.jar' | sort | tr 
'\n' ':')
 CP="$CP":$(find -L $LIB -name 'hugegraph*.jar' | sort | tr '\n' ':')
 # Add the remaining jars in lib.
 CP="$CP":$(find -L $LIB -name '*.jar' \
-                \! -name 'hugegraph*' \
-                \! -name 'log4j-slf4j-impl*.jar' | sort | tr '\n' ':')
+    \! -name 'hugegraph*' \
+    \! -name 'log4j-slf4j-impl*.jar' | sort | tr '\n' ':')
 # Add the jars in ext (at any subdirectory depth)
 CP="$CP":$(find -L $EXT -name '*.jar' | sort | tr '\n' ':')
 # Add the jars in plugins (at any subdirectory depth)
@@ -90,7 +90,7 @@ CP="$CP":$(find -L $PLUGINS -name '*.jar' | sort | tr '\n' 
':')
 export CLASSPATH="${CLASSPATH:-}:$CP"
 
 # Change to $BIN's parent
-cd "${TOP}" || exit 1;
+cd "${TOP}" || exit 1
 
 # Find java & enable server option
 if [ "$JAVA_HOME" = "" ]; then
@@ -102,7 +102,7 @@ fi
 JAVA_VERSION=$($JAVA -version 2>&1 | head -1 | cut -d'"' -f2 | sed 's/^1\.//' 
| cut -d'.' -f1)
 if [[ $? -ne 0 || $JAVA_VERSION -lt $MIN_JAVA_VERSION ]]; then
     echo "Make sure the JDK is installed and the version >= $MIN_JAVA_VERSION, 
current is $JAVA_VERSION" \
-         >> ${OUTPUT}
+         >> "${OUTPUT}"
     exit 1
 fi
 
@@ -110,7 +110,7 @@ fi
 if [ "$JAVA_OPTIONS" = "" ]; then
     XMX=$(calc_xmx $MIN_MEM $MAX_MEM)
     if [ $? -ne 0 ]; then
-        echo "Failed to start HugeGraphServer, requires at least ${MIN_MEM}MB 
free memory" >> ${OUTPUT}
+        echo "Failed to start HugeGraphServer, requires at least ${MIN_MEM}MB 
free memory" >> "${OUTPUT}"
         exit 1
     fi
     JAVA_OPTIONS="-Xms${MIN_MEM}m -Xmx${XMX}m -XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=${LOGS} ${USER_OPTION}"
@@ -128,14 +128,22 @@ fi
 
 # Using G1GC as the default garbage collector (Recommended for large memory 
machines)
 case "$GC_OPTION" in
-    g1)
+    g1|G1|g1gc)
         echo "Using G1GC as the default garbage collector"
         JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+UseG1GC -XX:+ParallelRefProcEnabled 
\
-                      -XX:InitiatingHeapOccupancyPercent=50 
-XX:G1RSetUpdatingPauseTimePercent=5"
+                                      -XX:InitiatingHeapOccupancyPercent=50 \
+                                      -XX:G1RSetUpdatingPauseTimePercent=5"
+        ;;
+    zgc|ZGC)
+        echo "Using ZGC as the default garbage collector (Only support Java 
11+)"
+        JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+UseZGC 
-XX:+UnlockExperimentalVMOptions \
+                                      -XX:ConcGCThreads=2 
-XX:ParallelGCThreads=6 \
+                                      -XX:ZCollectionInterval=120 
-XX:ZAllocationSpikeTolerance=5 \
+                                      -XX:+UnlockDiagnosticVMOptions 
-XX:-ZProactive"
         ;;
     "") ;;
     *)
-        echo "Unrecognized gc option: '$GC_OPTION', only support 'g1' now" >> 
${OUTPUT}
+        echo "Unrecognized gc option: '$GC_OPTION', only support 'G1/ZGC' now" 
>> ${OUTPUT}
         exit 1
 esac
 
@@ -145,6 +153,6 @@ if [[ ${OPEN_SECURITY_CHECK} == "true" ]]; then
 fi
 
 # Turn on security check
-exec ${JAVA} -Dname="HugeGraphServer" ${JVM_OPTIONS} ${JAVA_OPTIONS} \
-     -cp ${CLASSPATH}: org.apache.hugegraph.dist.HugeGraphServer 
${GREMLIN_SERVER_CONF} ${REST_SERVER_CONF} \
-     >> ${OUTPUT} 2>&1
+exec ${JAVA} -Dname="HugeGraphServer" ${JVM_OPTIONS} ${JAVA_OPTIONS} -cp 
${CLASSPATH}: \
+    org.apache.hugegraph.dist.HugeGraphServer ${GREMLIN_SERVER_CONF} 
${REST_SERVER_CONF} \
+    >> ${OUTPUT} 2>&1
diff --git a/hugegraph-dist/src/assembly/static/bin/init-store.sh 
b/hugegraph-dist/src/assembly/static/bin/init-store.sh
index 14b5ea9eb..856b33582 100755
--- a/hugegraph-dist/src/assembly/static/bin/init-store.sh
+++ b/hugegraph-dist/src/assembly/static/bin/init-store.sh
@@ -15,25 +15,25 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
-abs_path() {
+function abs_path() {
     SOURCE="${BASH_SOURCE[0]}"
     while [[ -h "$SOURCE" ]]; do
-        DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+        DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
         SOURCE="$(readlink "$SOURCE")"
-        [[ ${SOURCE} != /* ]] && SOURCE="$DIR/$SOURCE"
+        [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
     done
-    echo "$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+    cd -P "$(dirname "$SOURCE")" && pwd
 }
 
-BIN=`abs_path`
-TOP="$(cd ${BIN}/../ && pwd)"
+BIN=$(abs_path)
+TOP="$(cd "${BIN}"/../ && pwd)"
 CONF="$TOP/conf"
 LIB="$TOP/lib"
 PLUGINS="$TOP/plugins"
 
-. ${BIN}/util.sh
+. "${BIN}"/util.sh
 
-ensure_path_writable ${PLUGINS}
+ensure_path_writable "${PLUGINS}"
 
 if [[ -n "$JAVA_HOME" ]]; then
     JAVA="$JAVA_HOME"/bin/java
@@ -43,11 +43,11 @@ else
     EXT="$LIB:$PLUGINS"
 fi
 
-cd ${TOP}
+cd "${TOP}" || exit
 
 DEFAULT_JAVA_OPTIONS=""
-JAVA_VERSION=$($JAVA -version 2>&1 | awk 'NR==1{gsub(/"/,""); print $3}' \
-              | awk -F'_' '{print $1}')
+JAVA_VERSION=$($JAVA -version 2>&1 | awk 'NR==1{gsub(/"/,""); print $3}' | awk 
-F'_' '{print $1}')
+# TODO: better not string number compare, use `bc` like 
github.com/koalaman/shellcheck/wiki/SC2072
 if [[ $? -eq 0 && $JAVA_VERSION >  "1.9" ]]; then
       
DEFAULT_JAVA_OPTIONS="--add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED"
 fi
diff --git a/hugegraph-dist/src/assembly/static/bin/start-hugegraph.sh 
b/hugegraph-dist/src/assembly/static/bin/start-hugegraph.sh
index 7a5585281..85d259d3c 100644
--- a/hugegraph-dist/src/assembly/static/bin/start-hugegraph.sh
+++ b/hugegraph-dist/src/assembly/static/bin/start-hugegraph.sh
@@ -17,41 +17,45 @@
 #
 OPEN_MONITOR="false"
 OPEN_SECURITY_CHECK="true"
-VERBOSE=""
+DAEMON="true"
+#VERBOSE=""
 GC_OPTION=""
 USER_OPTION=""
 SERVER_STARTUP_TIMEOUT_S=30
 
-while getopts "g:m:s:j:t:v" arg; do
+while getopts "d:g:m:s:j:t:v" arg; do
     case ${arg} in
+        d) DAEMON="$OPTARG" ;;
         g) GC_OPTION="$OPTARG" ;;
         m) OPEN_MONITOR="$OPTARG" ;;
         s) OPEN_SECURITY_CHECK="$OPTARG" ;;
         j) USER_OPTION="$OPTARG" ;;
         t) SERVER_STARTUP_TIMEOUT_S="$OPTARG" ;;
+        # TODO: should remove it in future (check the usage carefully)
         v) VERBOSE="verbose" ;;
-        ?) echo "USAGE: $0 [-g g1] [-m true|false] [-s true|false] [-j 
java_options] [-t timeout] [-v]" && exit 1 ;;
+        ?) echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-s 
true|false] [-j java_options]
+                [-t timeout]" && exit 1 ;;
     esac
 done
 
 if [[ "$OPEN_MONITOR" != "true" && "$OPEN_MONITOR" != "false" ]]; then
-    echo "USAGE: $0 [-g g1] [-m true|false] [-s true|false] [-j xxx] [-v]"
+    echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-s true|false] 
[-j java_options]"
     exit 1
 fi
 
 if [[ "$OPEN_SECURITY_CHECK" != "true" && "$OPEN_SECURITY_CHECK" != "false" 
]]; then
-    echo "USAGE: $0 [-g g1] [-m true|false] [-s true|false] [-j xxx] [-v]"
+    echo "USAGE: $0 [-d true|false] [-g g1] [-m true|false] [-s true|false] 
[-j java_options]"
     exit 1
 fi
 
 function abs_path() {
     SOURCE="${BASH_SOURCE[0]}"
-    while [ -h "$SOURCE" ]; do
-        DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+    while [[ -h "$SOURCE" ]]; do
+        DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
         SOURCE="$(readlink "$SOURCE")"
         [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
     done
-    echo "$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+    cd -P "$(dirname "$SOURCE")" && pwd
 }
 
 BIN=$(abs_path)
@@ -75,10 +79,15 @@ if [ ! -d "$LOGS" ]; then
     mkdir -p "$LOGS"
 fi
 
-echo "Starting HugeGraphServer..."
-
-${BIN}/hugegraph-server.sh ${CONF}/gremlin-server.yaml 
${CONF}/rest-server.properties \
-${OPEN_SECURITY_CHECK} ${USER_OPTION} ${GC_OPTION} 
>>${LOGS}/hugegraph-server.log 2>&1 &
+if [[ $DAEMON == "true" ]]; then
+    echo "Starting HugeGraphServer in daemon mode..."
+    "${BIN}"/hugegraph-server.sh "${CONF}"/gremlin-server.yaml 
"${CONF}"/rest-server.properties \
+    "${OPEN_SECURITY_CHECK}" "${USER_OPTION}" "${GC_OPTION}" 
>>"${LOGS}"/hugegraph-server.log 2>&1 &
+else
+    echo "Starting HugeGraphServer in foreground mode..."
+    "${BIN}"/hugegraph-server.sh "${CONF}"/gremlin-server.yaml 
"${CONF}"/rest-server.properties \
+    "${OPEN_SECURITY_CHECK}" "${USER_OPTION}" "${GC_OPTION}" 
>>"${LOGS}"/hugegraph-server.log 2>&1
+fi
 
 PID="$!"
 # Write pid to file
@@ -86,15 +95,16 @@ echo "$PID" > "$PID_FILE"
 
 trap 'kill $PID; exit' SIGHUP SIGINT SIGQUIT SIGTERM
 
-wait_for_startup ${PID} 'HugeGraphServer' "$REST_SERVER_URL/graphs" 
${SERVER_STARTUP_TIMEOUT_S} || {
+wait_for_startup ${PID} 'HugeGraphServer' "$REST_SERVER_URL/graphs" 
"${SERVER_STARTUP_TIMEOUT_S}" || {
     echo "See $LOGS/hugegraph-server.log for HugeGraphServer log output." >&2
-    exit 1
+    if [[ $DAEMON == "true" ]]; then
+        exit 1
+    fi
 }
 disown
 
 if [ "$OPEN_MONITOR" == "true" ]; then
-    "$BIN"/start-monitor.sh
-    if [ $? -ne 0 ]; then
+    if ! "$BIN"/start-monitor.sh; then
         echo "Failed to open monitor, please start it manually"
     fi
     echo "An HugeGraphServer monitor task has been append to crontab"
diff --git a/hugegraph-dist/src/assembly/travis/run-api-test.sh 
b/hugegraph-dist/src/assembly/travis/run-api-test.sh
index 3122f52d3..c856ac54b 100755
--- a/hugegraph-dist/src/assembly/travis/run-api-test.sh
+++ b/hugegraph-dist/src/assembly/travis/run-api-test.sh
@@ -21,15 +21,15 @@ BACKEND=$1
 REPORT_DIR=$2
 REPORT_FILE=$REPORT_DIR/jacoco-api-test-for-raft.xml
 
-TRAVIS_DIR=`dirname $0`
-VERSION=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
+TRAVIS_DIR=$(dirname $0)
+VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
 SERVER_DIR=apache-hugegraph-incubating-$VERSION
 CONF=$SERVER_DIR/conf/graphs/hugegraph.properties
 REST_SERVER_CONF=$SERVER_DIR/conf/rest-server.properties
 GREMLIN_SERVER_CONF=$SERVER_DIR/conf/gremlin-server.yaml
 JACOCO_PORT=36320
 
-mvn package -DskipTests
+mvn package -DskipTests -ntp
 
 
 # add mysql dependency

Reply via email to