diff options
author | dcorbacho <dparracorbacho@piotal.io> | 2020-11-18 14:27:41 +0000 |
---|---|---|
committer | dcorbacho <dparracorbacho@piotal.io> | 2020-11-18 14:27:41 +0000 |
commit | f23a51261d9502ec39df0f8db47ba6b22aa7659f (patch) | |
tree | 53dcdf46e7dc2c14e81ee960bce8793879b488d3 /deps/rabbit/scripts/rabbitmq-env | |
parent | afa2c2bf6c7e0e9b63f4fb53dc931c70388e1c82 (diff) | |
parent | 9f6d64ec4a4b1eeac24d7846c5c64fd96798d892 (diff) | |
download | rabbitmq-server-git-stream-timestamp-offset.tar.gz |
Merge remote-tracking branch 'origin/master' into stream-timestamp-offsetstream-timestamp-offset
Diffstat (limited to 'deps/rabbit/scripts/rabbitmq-env')
-rwxr-xr-x | deps/rabbit/scripts/rabbitmq-env | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/deps/rabbit/scripts/rabbitmq-env b/deps/rabbit/scripts/rabbitmq-env new file mode 100755 index 0000000000..90702c43bb --- /dev/null +++ b/deps/rabbit/scripts/rabbitmq-env @@ -0,0 +1,190 @@ +#!/bin/sh -e +## This Source Code Form is subject to the terms of the Mozilla Public +## License, v. 2.0. If a copy of the MPL was not distributed with this +## file, You can obtain one at https://mozilla.org/MPL/2.0/. +## +## Copyright (c) 2007-2020 VMware, Inc. or its affiliates. All rights reserved. +## + +if [ "$RABBITMQ_ENV_LOADED" = 1 ]; then + return 0; +fi + +if [ -z "$RABBITMQ_SCRIPTS_DIR" ]; then + # We set +e here since since our test for "readlink -f" below needs to + # be able to fail. + set +e + # Determine where this script is really located (if this script is + # invoked from another script, this is the location of the caller) + SCRIPT_PATH="$0" + while [ -h "$SCRIPT_PATH" ] ; do + # Determine if readlink -f is supported at all. TODO clean this up. + FULL_PATH=`readlink -f $SCRIPT_PATH 2>/dev/null` + if [ "$?" != "0" ]; then + REL_PATH=`readlink $SCRIPT_PATH` + if expr "$REL_PATH" : '/.*' > /dev/null; then + SCRIPT_PATH="$REL_PATH" + else + SCRIPT_PATH="`dirname "$SCRIPT_PATH"`/$REL_PATH" + fi + else + SCRIPT_PATH=$FULL_PATH + fi + done + set -e + + RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH` +fi + +_rmq_env_now() +{ + date '+%Y-%m-%d %H:%M:%S' +} + +_rmq_env_print() +{ + _rmq_env_tmp="$1" + _rmq_env_tmp_len="${#_rmq_env_tmp}" + shift + printf '%s %s %s\n' "$(_rmq_env_now)" "$_rmq_env_tmp" "$1" 1>&2 + shift + _rmq_env_print_line='' + _rmq_env_indent="$((_rmq_env_tmp_len + 21))" + for _rmq_env_print_line in "$@" + do + printf "%${_rmq_env_indent}s%s\n" ' ' "$_rmq_env_print_line" 1>&2 + done + unset _rmq_env_print_line + unset _rmq_env_indent + unset _rmq_env_tmp_len + unset _rmq_env_tmp +} + +_rmq_env_perr() +{ + _rmq_env_print '[error]' "$@" +} + +_rmq_env_pwarn() +{ + _rmq_env_print '[warning]' "$@" +} + +rmq_realpath() { + local path=$1 + + if [ -d "$path" ]; then + cd "$path" && pwd + elif [ -f "$path" ]; then + cd "$(dirname "$path")" && echo $(pwd)/$(basename "$path") + else + echo "$path" + fi +} + +RABBITMQ_HOME="$(rmq_realpath "${RABBITMQ_SCRIPTS_DIR}/..")" +ESCRIPT_DIR="${RABBITMQ_HOME}/escript" + +## Set defaults +. ${RABBITMQ_SCRIPTS_DIR}/rabbitmq-defaults + +# We save the current value of $RABBITMQ_PID_FILE in case it was set by +# an init script. If $CONF_ENV_FILE overrides it again, we must ignore +# it and warn the user. +saved_RABBITMQ_PID_FILE="$RABBITMQ_PID_FILE" + +## Get configuration variables from the configure environment file +[ "x" = "x$RABBITMQ_CONF_ENV_FILE" ] && RABBITMQ_CONF_ENV_FILE=${CONF_ENV_FILE} +if [ -f "${RABBITMQ_CONF_ENV_FILE}" ]; then + CONF_ENV_FILE_PHASE=rabbitmq-env + . ${RABBITMQ_CONF_ENV_FILE} || true +fi + +[ -n "$ERL_EPMD_PORT" ] && export ERL_EPMD_PORT +[ -n "$ERL_EPMD_ADDRESS" ] && export ERL_EPMD_ADDRESS + +DEFAULT_SCHEDULER_BIND_TYPE="db" +[ -n "$SCHEDULER_BIND_TYPE" ] || SCHEDULER_BIND_TYPE="$DEFAULT_SCHEDULER_BIND_TYPE" +[ -n "$RABBITMQ_SCHEDULER_BIND_TYPE" ] || RABBITMQ_SCHEDULER_BIND_TYPE="$SCHEDULER_BIND_TYPE" + +DEFAULT_DISTRIBUTION_BUFFER_SIZE=128000 +[ -n "$DISTRIBUTION_BUFFER_SIZE" ] || DISTRIBUTION_BUFFER_SIZE="$DEFAULT_DISTRIBUTION_BUFFER_SIZE" +[ -n "$RABBITMQ_DISTRIBUTION_BUFFER_SIZE" ] || RABBITMQ_DISTRIBUTION_BUFFER_SIZE="$DISTRIBUTION_BUFFER_SIZE" + +DEFAULT_MAX_NUMBER_OF_PROCESSES=1048576 +[ -n "$MAX_NUMBER_OF_PROCESSES" ] || MAX_NUMBER_OF_PROCESSES="$DEFAULT_MAX_NUMBER_OF_PROCESSES" +[ -n "$RABBITMQ_MAX_NUMBER_OF_PROCESSES" ] || RABBITMQ_MAX_NUMBER_OF_PROCESSES="$MAX_NUMBER_OF_PROCESSES" + +DEFAULT_MAX_NUMBER_OF_ATOMS=5000000 +[ -n "$MAX_NUMBER_OF_ATOMS" ] || MAX_NUMBER_OF_ATOMS="$DEFAULT_MAX_NUMBER_OF_ATOMS" +[ -n "$RABBITMQ_MAX_NUMBER_OF_ATOMS" ] || RABBITMQ_MAX_NUMBER_OF_ATOMS="$MAX_NUMBER_OF_ATOMS" + +## Common server defaults +SERVER_ERL_ARGS=" +P $RABBITMQ_MAX_NUMBER_OF_PROCESSES +t $RABBITMQ_MAX_NUMBER_OF_ATOMS +stbt $RABBITMQ_SCHEDULER_BIND_TYPE +zdbbl $RABBITMQ_DISTRIBUTION_BUFFER_SIZE " + +##--- Set environment vars RABBITMQ_<var_name> to defaults if not set + +[ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS="$CTL_ERL_ARGS" +[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN="$CTL_DIST_PORT_MIN" +[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX="$CTL_DIST_PORT_MAX" +[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN='35672' +[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX="$(($RABBITMQ_CTL_DIST_PORT_MIN + 10))" + +[ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS} +[ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS} +[ "x" = "x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ] && RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS} +[ "x" = "x$RABBITMQ_SERVER_CODE_PATH" ] && RABBITMQ_SERVER_CODE_PATH=${SERVER_CODE_PATH} +[ "x" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT="true" +[ "xtrue" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT_FLAG="+B i" + +if [ -n "$saved_RABBITMQ_PID_FILE" ] && \ + [ "$saved_RABBITMQ_PID_FILE" != "$RABBITMQ_PID_FILE" ] +then + _rmq_env_pwarn 'RABBITMQ_PID_FILE was already set by the init script to:' \ + "$saved_RABBITMQ_PID_FILE" \ + 'The value set in rabbitmq-env.conf is ignored because it would break the init script.' + + RABBITMQ_PID_FILE="$saved_RABBITMQ_PID_FILE" +fi + +[ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE} + +##--- End of overridden <var_name> variables + +_rmq_env_set_erl_libs() +{ + if [ -n "$ERL_LIBS" ] + then + export ERL_LIBS="$RABBITMQ_HOME/plugins:$ERL_LIBS" + else + export ERL_LIBS="$RABBITMQ_HOME/plugins" + fi +} + +run_escript() +{ + escript_main="${1:?escript_main must be defined}" + shift + escript="${1:?escript must be defined}" + shift + + _rmq_env_set_erl_libs + + # Important: do not quote RABBITMQ_CTL_ERL_ARGS as they must be + # word-split + # shellcheck disable=SC2086 + exec erl +B \ + -boot "$CLEAN_BOOT_FILE" \ + -noinput -noshell -hidden -smp enable \ + $RABBITMQ_CTL_ERL_ARGS \ + -kernel inet_dist_listen_min "$RABBITMQ_CTL_DIST_PORT_MIN" \ + -kernel inet_dist_listen_max "$RABBITMQ_CTL_DIST_PORT_MAX" \ + -run escript start \ + -escript main "$escript_main" \ + -extra "$escript" "$@" +} + +RABBITMQ_ENV_LOADED=1 + +# Since we source this elsewhere, don't accidentally stop execution +true |