diff --git a/bin/hsqldb b/bin/hsqldb
index 8ee4c15..764b104 100755
--- a/bin/hsqldb
+++ b/bin/hsqldb
@@ -41,7 +41,7 @@
# use this file.
# This stuff will be ignored by systems that don't use chkconfig.
-# chkconfig: - 87 13
+# chkconfig: 345 87 13
# description: Hsqldb, A High Performance Java Database
# pidfile: /var/run/hsqldb.pid
# config: /etc/sysconfig/hsqldb
@@ -51,6 +51,7 @@
# Provides: HSQLDB-Server
# Required-Start: $syslog $remote_fs $network $named
# Required-Stop:
+# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: HSQLDB-Server
# Description: Hsqldb, A High Performance Java Database Server
@@ -100,7 +101,7 @@ INVOC_PATH=`dirname "$0"` || {
}
[ -n "$INVOC_PATH" ] && INVOC_PATH="${INVOC_PATH}/"
-SYNTAX_MSG="SYNTAX: ${INVOC_PATH}hsqldb start|stop|stopcompact|restart|restartcmpacted|status"
+SYNTAX_MSG="SYNTAX: ${INVOC_PATH}hsqldb start|stop|stopcompact|restart|restartcmpacted|status|try-restart|force-reload"
# You can override any of these default values in your config file:
@@ -178,7 +179,7 @@ done
[ $# -eq 1 ] || {
echo "$SYNTAX_MSG" 1>&2
- exit 4
+ exit 2
}
# It would be nice to permit some uses, like "status" by non-root users,
@@ -208,11 +209,11 @@ COMMAND="$1"; shift
[ -r "$CFGFILE" ] || {
echo "Unable to read config file '$CFGFILE'" 1>&2
- exit 2
+ exit 6
}
[ -f "$CFGFILE" ] || {
echo "'$CFGFILE' is not a regular file" 1>&2
- exit 2
+ exit 6
}
HSQLDB_OWNER=
JAVA_EXECUTABLE=
@@ -228,15 +229,15 @@ SERVER_ADDL_CLASSPATH="${SERVER_ADDL_CLASSPATH}:"
[ -n "$SERVER_HOME" ] || {
echo "Config file '$CFGFILE' does not set one or more of following variables
JAVA_EXECUTABLE, HSQLDB_JAR_PATH, SERVER_HOME" 1>&2
- exit 2
+ exit 6
}
[ -d "$SERVER_HOME" ] || {
echo "SERVER_HOME variable in '$CFGFILE' is set to a non-directory." 1>&2
- exit 2
+ exit 6
}
[ -f "$JAVA_EXECUTABLE" ] && [ -f "$HSQLDB_JAR_PATH" ] || {
echo "JAVA_EXECUTABLE or HSQLDB_JAR_PATH in '$CFGFILE' is set to a non-file." 1>&2
- exit 2
+ exit 6
}
# PROPERTY_FILE is a derived value.
@@ -245,23 +246,23 @@ case "$TARGET_CLASS" in
WebServer) PROPERTY_FILE="$SERVER_HOME"/webserver.properties;;
*)
echo 'Unsupported value for $TARGET_CLASS: '"$TARGET_CLASS" 1>&2
- exit 2;;
+ exit 6;;
esac
[ -f "$PROPERTY_FILE" ] || {
echo "'$PROPERTY_FILE' is missing" 1>&2
- exit 2
+ exit 6
}
[ -r "$PROPERTY_FILE" ] || {
echo "'$PROPERTY_FILE' isn't readable" 1>&2
- exit 2
+ exit 6
}
[ -r "$HSQLDB_JAR_PATH" ] || {
echo "'$HSQLDB_JAR_PATH' isn't readable" 1>&2
- exit 2
+ exit 6
}
[ -x "$JAVA_EXECUTABLE" ] || {
echo "No Java executable found at '$JAVA_EXECUTABLE'" 1>&2
- exit 2
+ exit 6
}
# "chown" lives here on some UNIXes.
@@ -278,15 +279,15 @@ else
[ -n "${_AUTH_TEST_PATH}" ] || _AUTH_TEST_PATH="$HOME/sqltool.rc"
[ -f "$_AUTH_TEST_PATH" ] || {
echo "No auth file found at '$_AUTH_TEST_PATH'" 1>&2
- exit 2
+ exit 6
}
[ -r "$_AUTH_TEST_PATH" ] || {
echo "Auth file '$_AUTH_TEST_PATH' not readable" 1>&2
- exit 2
+ exit 6
}
ls -ld "$_AUTH_TEST_PATH" | grep '^-..------' > /dev/null 2>&1 || {
echo "Fix permissions on '$_AUTH_TEST_PATH' like 'chmod 600 $_AUTH_TEST_PATH'" 1>&2
- exit 2
+ exit 6
}
fi
@@ -314,12 +315,20 @@ HSQLDB_PID=
exit 6
}
kill -0 "$HSQLDB_PID" > /dev/null 2>&1 || {
- echo 'Removing stale pid file'
- rm -f "$PIDFILE" || {
- echo "Failed to remove pid file '$PIDFILE'" 1>&2
- exit 6
- }
- HSQLDB_PID=
+ case "$COMMAND" in
+ status)
+ echo 'Pid file is stale'
+ exit 2
+ ;;
+ *)
+ echo 'Removing stale pid file'
+ rm -f "$PIDFILE" || {
+ echo "Failed to remove pid file '$PIDFILE'" 1>&2
+ exit 6
+ }
+ HSQLDB_PID=
+ ;;
+ esac
}
#echo "PID is ($HSQLDB_PID)"
}
@@ -328,7 +337,7 @@ case "$COMMAND" in
status)
[ -n "$HSQLDB_PID" ] || {
echo "I don't know of any running hsqldb server."
- exit 0
+ exit 3
}
echo "There is an hsqldb server loaded from $HSQLDB_JAR_PATH
running with pid $HSQLDB_PID."
@@ -351,7 +360,7 @@ running with pid $HSQLDB_PID."
start)
[ -n "$HSQLDB_PID" ] && {
echo "There is already a hsqldb server running with pid $HSQLDB_PID." 1>&2
- exit 1
+ exit 0
}
TLS_SWITCHES=
[ -n "$TLS_KEYSTORE" ] &&
@@ -436,7 +445,7 @@ See log file '$LOGFILE'." 1>&2
[ "$COMMAND" = stopcompact ] && SHUTDOWN_OPTION='compact'
[ -n "$HSQLDB_PID" ] || {
echo "I don't know of any running hsqldb server." 1>&2
- exit 1
+ exit 0
}
AUTH_FILE_SWITCH=
# N.b., there will be a problem if there are special characters or
@@ -463,7 +472,15 @@ See log file '$LOGFILE'." 1>&2
echo "Successful shutdown ${SHUTDOWN_OPTION} (for the $TARGET_CLASS process)!"
exit 0
;;
- restart|restartcompacted|reload)
+ try-restart)
+ [ -n "$HSQLDB_PID" ] || {
+ exit 0
+ }
+ STOP_COMMAND=stop
+ "${INVOC_PATH}"hsqldb $STOP_COMMAND || exit $?
+ exec "${INVOC_PATH}"/hsqldb start
+ ;;
+ restart|restartcompacted|force-reload)
STOP_COMMAND=stop
[ "$COMMAND" = restartcompacted ] && STOP_COMMAND=stopcompact
"${INVOC_PATH}"hsqldb $STOP_COMMAND || exit $?
@@ -471,6 +488,6 @@ See log file '$LOGFILE'." 1>&2
;;
*)
echo "$SYNTAX_MSG" 1>&2
- exit 5
+ exit 2
;;
esac