diff --git a/bin/emqx b/bin/emqx index 68e4bd8f6..e2581e486 100755 --- a/bin/emqx +++ b/bin/emqx @@ -267,13 +267,6 @@ if [ -d "$ERTS_DIR/lib" ]; then export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" fi -if [ -z "$WITH_EPMD" ]; then - EPMD_ARG="-start_epmd false -epmd_module ekka_epmd -proto_dist ekka" -else - PROTO_DIST=$(grep -E '^[ \t]*cluster.proto_dist[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | awk -F"= " '{print $NF}') - EPMD_ARG="-start_epmd true -proto_dist $PROTO_DIST" -fi - # Warn the user if ulimit -n is less than 1024 ULIMIT_F=$(ulimit -n) if [ "$ULIMIT_F" -lt 1024 ]; then @@ -463,6 +456,7 @@ wait_for() { return 1 fi WAIT_TIME=$((WAIT_TIME - 1)) + sleep 1 done } @@ -523,6 +517,29 @@ case "$1" in ;; esac +EPMD_ARG="-start_epmd false -epmd_module ekka_epmd -proto_dist ekka" +PROTO_DIST=$(grep -E '^[ \t]*cluster.proto_dist[ \t]*=[ \t]*' "$RUNNER_ETC_DIR/emqx.conf" 2> /dev/null | tail -1 | awk -F"= " '{print $NF}') +# this environment variable is required by ekka_dist module +# because proto_dist is overriden to ekka, and there is a lack of ekka_tls module +export EKKA_PROTO_DIST_MOD="${PROTO_DIST:-inet_tcp}" +if [ "$EKKA_PROTO_DIST_MOD" = 'inet_tls' ]; then + SSL_DIST_OPTFILE=${EMQX_SSL_DIST_OPTFILE:-"$RUNNER_ETC_DIR/ssl_dist.conf"} + case "$SSL_DIST_OPTFILE" in + *\ *) + set +x + echoerr "Got space in: $SSL_DIST_OPTFILE" + echoerr "No space is allowed for Erlang distribution over SSL option file path." + echoerr "Configure it from environment varialbe EMQX_SSL_DIST_OPTFILE." + echoerr "Or make sure emqx root path '$RUNNER_ROOT_DIR' has no space" + exit 1 + ;; + *) + true + ;; + esac + EPMD_ARG="${EPMD_ARG} -ssl_dist_optfile $SSL_DIST_OPTFILE" +fi + if [ "$IS_BOOT_COMMAND" = 'no' ]; then # for non-boot commands, inspect vm.