diff options
author | Shulhan | 2023-03-15 21:55:33 +0700 |
---|---|---|
committer | Shulhan | 2023-03-15 21:55:33 +0700 |
commit | 9d15a19a3dc3f51861de729e7f740039a5b84563 (patch) | |
tree | 8c3e38f1fbafadf016b73544153f75ba606cdc09 /questdb.sh | |
download | aur-questdb-git.tar.gz |
all: new AUR package for questdb
The reason for this package is there is a bug in grafana v9.4.x that
cause it cannot connect to questdb instance.
The fix is currently only available on the tip.
Diffstat (limited to 'questdb.sh')
-rw-r--r-- | questdb.sh | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/questdb.sh b/questdb.sh new file mode 100644 index 000000000000..9ca1fb23f462 --- /dev/null +++ b/questdb.sh @@ -0,0 +1,276 @@ +#!/usr/bin/env bash + +################################################################################ +# ___ _ ____ ____ +# / _ \ _ _ ___ ___| |_| _ \| __ ) +# | | | | | | |/ _ \/ __| __| | | | _ \ +# | |_| | |_| | __/\__ \ |_| |_| | |_) | +# \__\_\\__,_|\___||___/\__|____/|____/ +# +# Copyright (c) 2014-2019 Appsicle +# Copyright (c) 2019-2023 QuestDB +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +export QDB_PROCESS_LABEL="QuestDB-Runtime-66535" +export QDB_MAX_STOP_ATTEMPTS=5 +export QDB_OS=$(uname) + +case $(uname) in +Darwin | FreeBSD) + export PS_CMD="ps aux" + export QDB_DEFAULT_ROOT="/usr/local/var/questdb" + ;; +*) + export PS_CMD="ps -ef" + export QDB_DEFAULT_ROOT="/var/lib/questdb" + ;; +esac + +## jvm java_opt configurations +if [ -f "/etc/questdb/jvm.env" ]; then + source "/etc/questdb/jvm.env" +fi + +function read_link { + f=$(readlink $1) + if [ "$f" != "" ]; then + + if [[ "$f" != /* ]]; then + f="$(dirname $1)/$f" + f="$(cd $(dirname ${f}); pwd)/$(basename ${f})" + fi + + n=$(read_link ${f}) + if [ "$n" != "" ]; then + f=${n}; + fi + fi + echo "$f" +} + +function usage { + echo "Usage: $0 start|status|stop [-f] [-d path] [-t tag]" + echo + exit 55 +} + +function export_pid { + export QDB_PID=`${PS_CMD} | grep ${QDB_PROCESS_LABEL} | grep -v grep | tr -s " " | cut -d " " -f 2` +} + +function export_java { + + # check if this is our runtime + if [ -f "$BASE/java" ]; then + export QDB_PACKAGE=withjre + export JAVA="$BASE/java" + else + export QDB_PACKAGE=withoutjre + if [ "$JAVA_HOME" = "" -a -e /usr/libexec/java_home ]; then + JAVA_HOME=$(/usr/libexec/java_home -v 11) + fi + + # check that JAVA_HOME is defined + if [ "$JAVA_HOME" = "" ]; then + JAVA_HOME=/usr/lib/jvm/default + fi + + # check that Java binary is executable + export JAVA=${JAVA_HOME}/bin/java + fi + + if [ ! -x "$JAVA" ]; then + echo "$JAVA is not executable" + exit 55; + fi + + echo "JAVA: $JAVA" +} + +function export_args { + + export QDB_OVERWRITE_PUBLIC="" + export QDB_DISABLE_HUP_HANDLER="" + export QDB_CONTAINER_MODE="" + export QDB_ROOT=${QDB_DEFAULT_ROOT} + + while [[ $# -gt 0 ]]; do + key="$1" + + case ${key} in + -f) + export QDB_OVERWRITE_PUBLIC="-f" + ;; + -n) + export QDB_DISABLE_HUP_HANDLER="-n" + ;; + -c) + export QDB_CONTAINER_MODE="-c" + ;; + -d) + if [[ $# -eq 1 ]]; then + echo "Expected: -d <path>" + exit 55 + fi + export QDB_ROOT="$2" + shift + ;; + -t) + if [[ $# -eq 1 ]]; then + echo "Expected: -t <tag>" + exit 55 + fi + export QDB_PROCESS_LABEL="QuestDB-Runtime-$2" + shift + ;; + *) + echo "Unexpected option: $key" + usage + ;; + esac + shift + done +} + +function start { + + export_pid + + if [[ "${QDB_PID}" != "" ]]; then + echo "Already running. PID: ${QDB_PID}" + exit 55 + fi + + # LINK=$(read_link $0) + # if [ "$LINK" != "" ]; then + # BASE=$(dirname ${LINK}) + # else + # BASE=$(dirname $0) + # fi + BASE=/usr/share/java/questdb + + export_java + + # create root directory if it does not exist + if [ ! -d "$QDB_ROOT" ]; then + echo "Created QuestDB ROOT directory: $QDB_ROOT" + mkdir -p ${QDB_ROOT} + fi + + QDB_LOG=/var/log/questdb/ + mkdir -p ${QDB_LOG} + + JAVA_LIB="$BASE/questdb.jar" + + JAVA_OPTS="${JAVA_OPTS} + -D$QDB_PROCESS_LABEL + -ea -Dnoebug + -XX:+UnlockExperimentalVMOptions + -XX:+AlwaysPreTouch + -XX:+UseParallelGC + " + + JAVA_MAIN="io.questdb/io.questdb.ServerMain" + DATE=`date +%Y-%m-%dT%H-%M-%S` + + if [ "${QDB_CONTAINER_MODE}" != "" ]; then + ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} >${QDB_LOG}/stdout-${DATE}.txt + elif [ "${QDB_DISABLE_HUP_HANDLER}" = "" ]; then + ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} >${QDB_LOG}/stdout-${DATE}.txt & + sleep 0.5 + else + ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} ${QDB_DISABLE_HUP_HANDLER} >${QDB_LOG}/stdout-${DATE}.txt + fi +} + +function query { + export_pid + + if [[ "${QDB_PID}" = "" ]]; then + echo "Not running" + else + echo "PID: ${QDB_PID}" + fi +} + +function stop { + export_pid + if [[ "${QDB_PID}" = "" ]]; then + echo "Not running" + exit 55 + fi + + OUR_PID=${QDB_PID} + + echo "Stopping ${OUR_PID}" + + count=${QDB_MAX_STOP_ATTEMPTS} + while [ "${QDB_PID}" != "" ] && [ ${count} -gt 0 ]; do + kill ${QDB_PID} + sleep 0.5 + export_pid + count=$((count - 1)) + done + + if [[ "${QDB_PID}" != "" ]]; then + kill -9 ${QDB_PID} + echo "Something is wrong. Process does not stop. Killing..." + export_pid + fi + + if [[ "${QDB_PID}" != "" ]]; then + echo "Cannot stop ${QDB_PID}. Check permissions." + else + echo "Stopped ${OUR_PID}" + fi +} + +function banner { + echo '' + echo ' ___ _ ____ ____' + echo ' / _ \ _ _ ___ ___| |_| _ \| __ )' + echo '| | | | | | |/ _ \/ __| __| | | | _ \' + echo '| |_| | |_| | __/\__ \ |_| |_| | |_) |' + echo ' \__\_\\__,_|\___||___/\__|____/|____/' + echo ' www.questdb.io' + echo +} + +banner + +if [[ $# -gt 0 ]]; then + command=$1 + shift + + export_args $@ + + case ${command} in + start) + start + ;; + status) + query + ;; + stop) + stop + ;; + *) + usage + ;; + esac +else + usage +fi |