You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hugegraph.apache.org by ji...@apache.org on 2022/11/29 11:05:14 UTC
[incubator-hugegraph] 01/01: refact(dist): avoid script exit while restarting & clean script
This is an automated email from the ASF dual-hosted git repository.
jin pushed a commit to branch fix-script
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph.git
commit fd7c288952501cf226553ed92f438a167b1684ca
Author: imbajin <ji...@apache.org>
AuthorDate: Tue Nov 29 19:04:35 2022 +0800
refact(dist): avoid script exit while restarting & clean script
- fix "restart" not work in script
- clean shell script to avoid error in high-version bash/sh
---
.../org/apache/hugegraph/version/ApiVersion.java | 2 -
.../org/apache/hugegraph/version/CoreVersion.java | 1 -
hugegraph-dist/src/assembly/static/bin/hugegraph | 66 +++++-----------
.../src/assembly/static/bin/stop-hugegraph.sh | 14 ++--
hugegraph-dist/src/assembly/static/bin/util.sh | 92 +++++++++++-----------
5 files changed, 73 insertions(+), 102 deletions(-)
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java b/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
index ce7494174..b5e9a79aa 100644
--- a/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
+++ b/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
@@ -120,13 +120,11 @@ public final class ApiVersion {
/**
* The second parameter of Version.of() is for IDE running without JAR
- * TODO: what shall we set for this version? (consider the basic compatibility)
*/
public static final Version VERSION = Version.of(ApiVersion.class, "0.69");
public static void check() {
// Check version of hugegraph-core. Firstly do check from version 0.3
- // TODO: what shall we set for this version? (consider the basic compatibility)
VersionUtil.check(CoreVersion.VERSION, "1.0", "1.1", CoreVersion.NAME);
}
}
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java b/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java
index 6fb9a3b70..b92ac6668 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java
+++ b/hugegraph-core/src/main/java/org/apache/hugegraph/version/CoreVersion.java
@@ -40,7 +40,6 @@ public class CoreVersion {
public static void check() {
// Check version of hugegraph-common
- // TODO: why shall we check it? Update it if need
VersionUtil.check(CommonVersion.VERSION, "1.0", "1.1", CommonVersion.NAME);
}
}
diff --git a/hugegraph-dist/src/assembly/static/bin/hugegraph b/hugegraph-dist/src/assembly/static/bin/hugegraph
index 9939ececb..bf4117f9b 100644
--- a/hugegraph-dist/src/assembly/static/bin/hugegraph
+++ b/hugegraph-dist/src/assembly/static/bin/hugegraph
@@ -16,45 +16,26 @@
# limitations under the License.
#
-#
-# hugegraph This shell script takes care of starting and stopping
-# HugeGraphServer.
-#
-# chkconfig: - 58 74
-# description: HugeGraphServer is graph database server. It provides graph \
-# service by RESTful API consisted with graph, schema, gremlin and other APIs.
-
-### BEGIN INIT INFO
-# Provides: HugeGraphServer
-# Required-Start: $java
-# Required-Stop: $java
-# Should-Start: -
-# Should-Stop: -
-# Short-Description: start and stop HugeGraphServer
-# Description: HugeGraphServer is graph database server. It provides graph
-# service by RESTful API consisted with graph, schema, gremlin
-# and other APIs.
-### END INIT INFO
+# This script is used for starting and stopping HugeGraphServer easily.
+# We could copy this file under '/usr/bin' to use it globally
-# Variables
-# it requires user to set a fixed abs path manually
+# Note: user must set a absolute path below
INSTALL_DIR=
SERVER_PORT=
-${INSTALL_DIR:?"Please set variables 'INSTALL_DIR'"}
-${SERVER_PORT:?"Please set variables 'SERVER_PORT'"}
+${INSTALL_DIR:?"Please open the script then set variable 'INSTALL_DIR' manually"}
+${SERVER_PORT:?"Please open the script then set variable 'SERVER_PORT' manually"}
BIN_DIR=$INSTALL_DIR/bin
SERVER_URL="http://localhost:${SERVER_PORT}"
DETECT_URL="$SERVER_URL/versions"
+EXIT=1
# Start the HugeGraphServer
start() {
- echo "Starting HugeGraphServer..."
# Verify if the service is running
- get_status
- if [ $? -eq 0 ]; then
- echo "The service is already running"
+ if get_status; then
+ echo "The graph server is already running"
exit 0
else
# Run the service
@@ -64,12 +45,11 @@ start() {
#sleep 10
# Verify if the service is running
- get_status
- if [ $? -eq 0 ]; then
- echo "Service was successfully started"
+ if get_status; then
+ echo "Graph server was successfully started"
exit 0
else
- echo "Failed to start service"
+ echo "Failed to start graph server"
exit 1
fi
fi
@@ -79,25 +59,21 @@ start() {
stop() {
echo "Stopping HugeGraphServer..."
# Verify if the service is running
- get_status
- if [ $? -eq 0 ]; then
+ if get_status; then
# Stop the service
$BIN_DIR/stop-hugegraph.sh
- # Sleep time before the service verification
- #sleep 10
-
# Verify if the service is running
- get_status
- if [ $? -eq 0 ]; then
+ if get_status; then
echo "Failed to stop service"
- exit 1
else
echo "Service was successfully stopped"
- exit 0
fi
else
echo "The service is already stopped"
+ fi
+
+ if [[ $EXIT -eq 1 ]]; then
exit 0
fi
}
@@ -106,8 +82,7 @@ stop() {
status() {
echo "Checking status of HugeGraphServer..."
# Verify if the HugeGraphServer is running
- get_status
- if [ $? -eq 0 ]; then
+ if get_status; then
echo "Service is running"
exit 0
else
@@ -119,7 +94,7 @@ status() {
# Get status of HugeGraphServer to ensure it is alive
get_status() {
HTTP_CODE=$(curl -I -s -w "%{http_code}" -o /dev/null $DETECT_URL)
- if [ $HTTP_CODE = 200 ]; then
+ if [ "$HTTP_CODE" = 200 ]; then
return 0
else
return 1
@@ -137,12 +112,13 @@ case "$1" in
status)
status
;;
- restart|reload)
+ restart|reload|rs)
+ EXIT=0
stop
start
;;
*)
- echo $"Usage: $0 {start|stop|status|restart|reload}"
+ echo $"Usage: $0 {start, stop, status, restart|reload|rs}"
exit 1
esac
exit 0
diff --git a/hugegraph-dist/src/assembly/static/bin/stop-hugegraph.sh b/hugegraph-dist/src/assembly/static/bin/stop-hugegraph.sh
index 751180e19..b7c19f72f 100755
--- a/hugegraph-dist/src/assembly/static/bin/stop-hugegraph.sh
+++ b/hugegraph-dist/src/assembly/static/bin/stop-hugegraph.sh
@@ -39,17 +39,16 @@ abs_path() {
echo "$( cd -P "$( dirname "$SOURCE" )" && pwd )"
}
-BIN=`abs_path`
+BIN=$(abs_path)
TOP="$(cd $BIN/../ && pwd)"
-. $BIN/util.sh
+. "$BIN"/util.sh
PID_FILE=$BIN/pid
SERVER_SHUTDOWN_TIMEOUT_S=10
if [ "$CLOSE_MONITOR" == "true" ]; then
- $BIN/stop-monitor.sh
- if [ $? -ne 0 ]; then
+ if ! "$BIN"/stop-monitor.sh; then
# TODO: If remove monitor failed, should continue kill process?
echo "Failed to close monitor, please stop it manually via crontab -e"
else
@@ -57,14 +56,13 @@ if [ "$CLOSE_MONITOR" == "true" ]; then
fi
fi
-if [ ! -f ${PID_FILE} ]; then
+if [ ! -f "${PID_FILE}" ]; then
echo "The pid file $PID_FILE doesn't exist"
exit 1
fi
-PID=`cat $PID_FILE`
-kill_process_and_wait "HugeGraphServer" "$PID" "$SERVER_SHUTDOWN_TIMEOUT_S"
+PID=$(cat $PID_FILE)
-if [ $? -eq 0 ]; then
+if kill_process_and_wait "HugeGraphServer" "$PID" "$SERVER_SHUTDOWN_TIMEOUT_S"; then
rm "$PID_FILE"
fi
diff --git a/hugegraph-dist/src/assembly/static/bin/util.sh b/hugegraph-dist/src/assembly/static/bin/util.sh
index e079dd11b..bc47bf37b 100755
--- a/hugegraph-dist/src/assembly/static/bin/util.sh
+++ b/hugegraph-dist/src/assembly/static/bin/util.sh
@@ -17,7 +17,7 @@
#
function command_available() {
local cmd=$1
- if [ `command -v $cmd >/dev/null 2>&1` ]; then
+ if [ "$(command -v "$cmd" >/dev/null 2>&1)" ]; then
return 1
else
return 0
@@ -29,8 +29,8 @@ function read_property() {
# file path
file_name=$1
# replace "." to "\."
- property_name=`echo $2 | sed 's/\./\\\./g'`
- cat $file_name | sed -n -e "s/^[ ]*//g;/^#/d;s/^$property_name=//p" | tail -1
+ property_name=$(echo "$2" | sed 's/\./\\\./g')
+ cat "$file_name" | sed -n -e "s/^[ ]*//g;/^#/d;s/^$property_name=//p" | tail -1
}
function write_property() {
@@ -38,7 +38,7 @@ function write_property() {
local key=$2
local value=$3
- local os=`uname`
+ local os=$(uname)
case $os in
# Note: in mac os should use sed -i '' "xxx" to replace string,
# otherwise prompt 'command c expects \ followed by text'.
@@ -53,7 +53,7 @@ function parse_yaml() {
local version=$2
local module=$3
- cat $file | tr -d '\n {}'| awk -F',+|:' '''{
+ cat "$file" | tr -d '\n {}'| awk -F',+|:' '''{
pre="";
for(i=1; i<=NF; ) {
if(match($i, /version/)) {
@@ -69,23 +69,23 @@ function parse_yaml() {
}
function process_num() {
- num=`ps -ef | grep $1 | grep -v grep | wc -l`
- return $num
+ num=$(ps -ef | grep "$1" | grep -v grep | wc -l)
+ return "$num"
}
function process_id() {
- pid=`ps -ef | grep $1 | grep -v grep | awk '{print $2}'`
- return $pid
+ pid=$(ps -ef | grep "$1" | grep -v grep | awk '{print $2}')
+ return "$pid"
}
# check the port of rest server is occupied
function check_port() {
- local port=`echo $1 | awk -F':' '{print $3}'`
+ local port=$(echo "$1" | awk -F':' '{print $3}')
if ! command_available "lsof"; then
echo "Required lsof but it is unavailable"
exit 1
fi
- lsof -i :$port >/dev/null
+ lsof -i :"$port" >/dev/null
if [ $? -eq 0 ]; then
echo "The port $port has already been used"
exit 1
@@ -127,13 +127,13 @@ function wait_for_startup() {
local server_url="$3"
local timeout_s="$4"
- local now_s=`date '+%s'`
- local stop_s=$(( $now_s + $timeout_s ))
+ local now_s=$(date '+%s')
+ local stop_s=$((now_s + timeout_s))
local status
echo -n "Connecting to $server_name ($server_url)"
- while [ $now_s -le $stop_s ]; do
+ while [ "$now_s" -le $stop_s ]; do
echo -n .
process_status "$server_name" "$pid" >/dev/null
if [ $? -eq 1 ]; then
@@ -141,14 +141,14 @@ function wait_for_startup() {
return 1
fi
- status=`curl -o /dev/null -s -k -w %{http_code} $server_url`
+ status=$(curl -I -s -w "%{http_code}" -o /dev/null "$server_url")
if [[ $status -eq 200 || $status -eq 401 ]]; then
echo "OK"
echo "Started [pid $pid]"
return 0
fi
sleep 2
- now_s=`date '+%s'`
+ now_s=$(date '+%s')
done
echo "The operation timed out(${timeout_s}s) when attempting to connect to $server_url" >&2
@@ -157,35 +157,35 @@ function wait_for_startup() {
function free_memory() {
local free=""
- local os=`uname`
+ local os=$(uname)
if [ "$os" == "Linux" ]; then
- local mem_free=`cat /proc/meminfo | grep -w "MemFree" | awk '{print $2}'`
- local mem_buffer=`cat /proc/meminfo | grep -w "Buffers" | awk '{print $2}'`
- local mem_cached=`cat /proc/meminfo | grep -w "Cached" | awk '{print $2}'`
+ local mem_free=$(cat /proc/meminfo | grep -w "MemFree" | awk '{print $2}')
+ local mem_buffer=$(cat /proc/meminfo | grep -w "Buffers" | awk '{print $2}')
+ local mem_cached=$(cat /proc/meminfo | grep -w "Cached" | awk '{print $2}')
if [[ "$mem_free" == "" || "$mem_buffer" == "" || "$mem_cached" == "" ]]; then
echo "Failed to get free memory"
exit 1
fi
- free=`expr $mem_free + $mem_buffer + $mem_cached`
- free=`expr $free / 1024`
+ free=$(expr "$mem_free" + "$mem_buffer" + "$mem_cached")
+ free=$(expr "$free" / 1024)
elif [ "$os" == "Darwin" ]; then
- local pages_free=`vm_stat | awk '/Pages free/{print $0}' | awk -F'[:.]+' '{print $2}' | tr -d " "`
- local pages_inactive=`vm_stat | awk '/Pages inactive/{print $0}' | awk -F'[:.]+' '{print $2}' | tr -d " "`
- local pages_available=`expr $pages_free + $pages_inactive`
- free=`expr $pages_available \* 4096 / 1024 / 1024`
+ local pages_free=$(vm_stat | awk '/Pages free/{print $0}' | awk -F'[:.]+' '{print $2}' | tr -d " ")
+ local pages_inactive=$(vm_stat | awk '/Pages inactive/{print $0}' | awk -F'[:.]+' '{print $2}' | tr -d " ")
+ local pages_available=$(expr "$pages_free" + "$pages_inactive")
+ free=$(expr "$pages_available" \* 4096 / 1024 / 1024)
else
echo "Unsupported operating system $os"
exit 1
fi
- echo $free
+ echo "$free"
}
function calc_xmx() {
local min_mem=$1
local max_mem=$2
# Get machine available memory
- local free=`free_memory`
- local half_free=$[free/2]
+ local free=$(free_memory)
+ local half_free=$((free/2))
local xmx=$min_mem
if [[ "$free" -lt "$min_mem" ]]; then
@@ -223,7 +223,7 @@ function ensure_path_writable() {
local path=$1
# Ensure input path exist
if [ ! -d "${path}" ]; then
- mkdir -p ${path}
+ mkdir -p "${path}"
fi
# Check for write permission
if [ ! -w "${path}" ]; then
@@ -233,29 +233,29 @@ function ensure_path_writable() {
}
function get_ip() {
- local os=`uname`
+ local os=$(uname)
local loopback="127.0.0.1"
local ip=""
case $os in
Linux)
if command_available "ifconfig"; then
- ip=`ifconfig | grep 'inet addr:' | grep -v "$loopback" | cut -d: -f2 | awk '{ print $1}'`
+ ip=$(ifconfig | grep 'inet addr:' | grep -v "$loopback" | cut -d: -f2 | awk '{ print $1}')
elif command_available "ip"; then
- ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'`
+ ip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}')
else
ip=$loopback
fi
;;
FreeBSD|OpenBSD|Darwin)
if command_available "ifconfig"; then
- ip=`ifconfig | grep -E 'inet.[0-9]' | grep -v "$loopback" | awk '{ print $2}'`
+ ip=$(ifconfig | grep -E 'inet.[0-9]' | grep -v "$loopback" | awk '{ print $2}')
else
ip=$loopback
fi
;;
SunOS)
if command_available "ifconfig"; then
- ip=`ifconfig -a | grep inet | grep -v "$loopback" | awk '{ print $2} '`
+ ip=$(ifconfig -a | grep inet | grep -v "$loopback" | awk '{ print $2} ')
else
ip=$loopback
fi
@@ -271,9 +271,9 @@ function download() {
if command_available "wget"; then
wget --help | grep -q '\--show-progress' && progress_opt="-q --show-progress" || progress_opt=""
- wget ${link_url} -P ${path} $progress_opt
+ wget "${link_url}" -P "${path}" "$progress_opt"
elif command_available "curl"; then
- curl ${link_url} -o ${path}/${link_url}
+ curl "${link_url}" -o "${path}"/"${link_url}"
else
echo "Required wget or curl but they are unavailable"
exit 1
@@ -286,10 +286,10 @@ function ensure_package_exist() {
local tar=$3
local link=$4
- if [ ! -d ${path}/${dir} ]; then
- if [ ! -f ${path}/${tar} ]; then
+ if [ ! -d "${path}"/"${dir}" ]; then
+ if [ ! -f "${path}"/"${tar}" ]; then
echo "Downloading the compressed package '${tar}'"
- download ${path} ${link}
+ download "${path}" "${link}"
if [ $? -ne 0 ]; then
echo "Failed to download, please ensure the network is available and link is valid"
exit 1
@@ -297,7 +297,7 @@ function ensure_package_exist() {
echo "[OK] Finished download"
fi
echo "Unzip the compressed package '$tar'"
- tar -zxvf ${path}/${tar} -C ${path} >/dev/null 2>&1
+ tar zxvf "${path}"/"${tar}" -C "${path}" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Failed to unzip, please check the compressed package"
exit 1
@@ -313,11 +313,11 @@ function wait_for_shutdown() {
local pid="$2"
local timeout_s="$3"
- local now_s=`date '+%s'`
- local stop_s=$(( $now_s + $timeout_s ))
+ local now_s=$(date '+%s')
+ local stop_s=$((now_s + timeout_s))
echo -n "Killing $process_name(pid $pid)" >&2
- while [ $now_s -le $stop_s ]; do
+ while [ "$now_s" -le $stop_s ]; do
echo -n .
process_status "$process_name" "$pid" >/dev/null
if [ $? -eq 1 ]; then
@@ -325,7 +325,7 @@ function wait_for_shutdown() {
return 0
fi
sleep 2
- now_s=`date '+%s'`
+ now_s=$(date '+%s')
done
echo "$process_name shutdown timeout(exceeded $timeout_s seconds)" >&2
return 1
@@ -354,7 +354,7 @@ function kill_process() {
return 0
fi
- case "`uname`" in
+ case "$(uname)" in
CYGWIN*) taskkill /F /PID "$pid" ;;
*) kill "$pid" ;;
esac