Преглед изворни кода

fix(bin/emqx): ensure protable dynamic libs loaded before call_hocon

Zaiming (Stone) Shi пре 3 година
родитељ
комит
e0709f7eae
1 измењених фајлова са 5 додато и 6 уклоњено
  1. 5 6
      bin/emqx

+ 5 - 6
bin/emqx

@@ -337,7 +337,7 @@ compatiblity_info() {
 }
 }
 
 
 # Collect Erlang/OTP runtime sanity and compatibility in one go
 # Collect Erlang/OTP runtime sanity and compatibility in one go
-if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
+maybe_use_portable_dynlibs() {
     # Read BUILD_INFO early as the next commands may mess up the shell
     # Read BUILD_INFO early as the next commands may mess up the shell
     BUILD_INFO="$(cat "${REL_DIR}/BUILD_INFO")"
     BUILD_INFO="$(cat "${REL_DIR}/BUILD_INFO")"
     COMPATIBILITY_INFO="$(compatiblity_info 2>/dev/null || true)"
     COMPATIBILITY_INFO="$(compatiblity_info 2>/dev/null || true)"
@@ -348,11 +348,9 @@ if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
             export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH"
             export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH"
         fi
         fi
         ## Turn off debug, because COMPATIBILITY_INFO needs to capture stderr
         ## Turn off debug, because COMPATIBILITY_INFO needs to capture stderr
-        set +x
         COMPATIBILITY_INFO="$(compatiblity_info 2>&1 || true)"
         COMPATIBILITY_INFO="$(compatiblity_info 2>&1 || true)"
         if ! (echo -e "$COMPATIBILITY_INFO" | $GREP -q 'BEAM_OK'); then
         if ! (echo -e "$COMPATIBILITY_INFO" | $GREP -q 'BEAM_OK'); then
             ## not able to start beam.smp
             ## not able to start beam.smp
-            set +x
             logerr "$COMPATIBILITY_INFO"
             logerr "$COMPATIBILITY_INFO"
             logerr "Please ensure it is running on the correct platform:"
             logerr "Please ensure it is running on the correct platform:"
             logerr "$BUILD_INFO"
             logerr "$BUILD_INFO"
@@ -361,14 +359,12 @@ if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
             exit 1
             exit 1
         elif ! (echo -e "$COMPATIBILITY_INFO" | $GREP -q 'CRYPTO_OK'); then
         elif ! (echo -e "$COMPATIBILITY_INFO" | $GREP -q 'CRYPTO_OK'); then
             ## not able to start crypto app
             ## not able to start crypto app
-            set +x
             logerr "$COMPATIBILITY_INFO"
             logerr "$COMPATIBILITY_INFO"
             exit 2
             exit 2
         fi
         fi
         logwarn "Using libs from '${DYNLIBS_DIR}' due to missing from the OS."
         logwarn "Using libs from '${DYNLIBS_DIR}' due to missing from the OS."
     fi
     fi
-    [ "$DEBUG" -eq 1 ] && set -x
-fi
+}
 
 
 # Warn the user if ulimit -n is less than 1024
 # Warn the user if ulimit -n is less than 1024
 ULIMIT_F=$(ulimit -n)
 ULIMIT_F=$(ulimit -n)
@@ -461,6 +457,7 @@ fi
 set +x
 set +x
 if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
 if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
     [ -f "$EMQX_ETC_DIR"/emqx.conf ] || die "emqx.conf is not found in $EMQX_ETC_DIR" 1
     [ -f "$EMQX_ETC_DIR"/emqx.conf ] || die "emqx.conf is not found in $EMQX_ETC_DIR" 1
+    maybe_use_portable_dynlibs
     if [ "${EMQX_BOOT_CONFIGS:-}" = '' ]; then
     if [ "${EMQX_BOOT_CONFIGS:-}" = '' ]; then
         EMQX_BOOT_CONFIGS="$(call_hocon -s "$SCHEMA_MOD" -c "$EMQX_ETC_DIR"/emqx.conf multi_get "${CONF_KEYS[@]}")"
         EMQX_BOOT_CONFIGS="$(call_hocon -s "$SCHEMA_MOD" -c "$EMQX_ETC_DIR"/emqx.conf multi_get "${CONF_KEYS[@]}")"
         ## export here so the 'console' command recursively called from
         ## export here so the 'console' command recursively called from
@@ -514,6 +511,8 @@ else
     else
     else
         ## None or more than one node is running, resolve from boot config
         ## None or more than one node is running, resolve from boot config
         ## we have no choiece but to read the bootstrap config (with environment overrides available in the current shell)
         ## we have no choiece but to read the bootstrap config (with environment overrides available in the current shell)
+        [ -f "$EMQX_ETC_DIR"/emqx.conf ] || die "emqx.conf is not found in $EMQX_ETC_DIR" 1
+        maybe_use_portable_dynlibs
         EMQX_BOOT_CONFIGS="$(call_hocon -s "$SCHEMA_MOD" -c "$EMQX_ETC_DIR"/emqx.conf multi_get "${CONF_KEYS[@]}")"
         EMQX_BOOT_CONFIGS="$(call_hocon -s "$SCHEMA_MOD" -c "$EMQX_ETC_DIR"/emqx.conf multi_get "${CONF_KEYS[@]}")"
     fi
     fi
 fi
 fi