diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 8faa00abd..f77336e13 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -35,7 +35,7 @@ -define(EMQX_RELEASE_CE, "5.1.0-rc.1"). %% Enterprise edition --define(EMQX_RELEASE_EE, "5.1.0-rc.1"). +-define(EMQX_RELEASE_EE, "5.1.0-rc.2"). %% The HTTP API version -define(EMQX_API_VERSION, "5.0"). diff --git a/apps/emqx/src/emqx_release.erl b/apps/emqx/src/emqx_release.erl index c052eecc9..7d065e15b 100644 --- a/apps/emqx/src/emqx_release.erl +++ b/apps/emqx/src/emqx_release.erl @@ -132,10 +132,13 @@ parse_vsn(Vsn) -> Suffix = case Suffix0 of "" -> - %% For the case like "5.1.0" + %% "5.1.0" ""; - [ReleaseStage, Number] -> - %% For the case like "5.1.0-rc.1" + ["g" ++ _] -> + %% "5.1.0-g53ab85b1" + ""; + [ReleaseStage, Number | _] -> + %% "5.1.0-rc.1" or "5.1.0-rc.1-g53ab85b1" {ReleaseStage, list_to_integer(Number)} end, {{list_to_integer(V1), list_to_integer(V2), list_to_integer(V3)}, Suffix} diff --git a/apps/emqx/test/emqx_release_tests.erl b/apps/emqx/test/emqx_release_tests.erl index 45d9a53c4..3f4e4ebfd 100644 --- a/apps/emqx/test/emqx_release_tests.erl +++ b/apps/emqx/test/emqx_release_tests.erl @@ -47,6 +47,10 @@ vsn_compre_test_() -> ?assertEqual(older, emqx_release:vsn_compare("1.1.1", "1.1.1-rc.1")), ?assertEqual(newer, emqx_release:vsn_compare("1.1.1-rc.1", "1.1.1")) end}, + {"git hash suffix is ignored", fun() -> + ?assertEqual(older, emqx_release:vsn_compare("1.1.1-gabcd", "1.1.1-rc.1-g1234")), + ?assertEqual(newer, emqx_release:vsn_compare("1.1.1-rc.1-gabcd", "1.1.1-g1234")) + end}, {"invalid version string will crash", fun() -> ?assertError({invalid_version_string, "1.1.a"}, emqx_release:vsn_compare("v1.1.a")), ?assertError( diff --git a/apps/emqx_conf/src/emqx_conf_app.erl b/apps/emqx_conf/src/emqx_conf_app.erl index 6a7638cc2..1505b8c3e 100644 --- a/apps/emqx_conf/src/emqx_conf_app.erl +++ b/apps/emqx_conf/src/emqx_conf_app.erl @@ -223,7 +223,7 @@ sync_cluster_conf4(Ready) -> msg => "sync_cluster_conf_success", synced_from_node => Node, has_deprecated_file => HasDeprecatedFile, - local_release => emqx_app:get_release(), + local_release => emqx_release:version_with_prefix(), remote_release => maps:get(release, Info, "before_v5.0.24|e5.0.3"), data_dir => emqx:data_dir(), tnx_id => TnxId diff --git a/scripts/test/start-two-nodes-in-host.sh b/scripts/test/start-two-nodes-in-host.sh index 3d0b0bf61..ffd4b6b19 100755 --- a/scripts/test/start-two-nodes-in-host.sh +++ b/scripts/test/start-two-nodes-in-host.sh @@ -12,10 +12,40 @@ set -euo pipefail # ensure dir cd -P -- "$(dirname -- "$0")/../../" -DEFAULT_BOOT='./_build/emqx/rel/emqx/bin/emqx' +help() { + echo + echo "-h|--help: To display this usage info" + echo "-b|--boots: boot scripts, comma separate if more than one" + echo " default is ./_build/emqx/rel/emqx/bin/emqx" + echo "-r|--roles: node (db) roles, comma separate" +} -BOOT1="${1:-$DEFAULT_BOOT}" -BOOT2="${2:-$BOOT1}" +BOOT='./_build/emqx/rel/emqx/bin/emqx' +ROLES='core,core' +while [ "$#" -gt 0 ]; do + case $1 in + -h|--help) + help + exit 0 + ;; + -b|--boots) + BOOT="$2" + shift 2 + ;; + -r|--roles) + ROLES="$2" + shift 2 + ;; + *) + echo "unknown option $1" + exit 1 + ;; + esac +done + +BOOT1="$(echo "$BOOT" | cut -d ',' -f1)" +BOOT2="$(echo "$BOOT" | cut -d ',' -f2)" +[ -z "$BOOT2" ] && BOOT2="$BOOT1" export IP1='127.0.0.1' export IP2='127.0.0.2' @@ -24,6 +54,22 @@ export IP2='127.0.0.2' NODE1="emqx1@$IP1" NODE2="emqx2@$IP2" +ROLE1="$(echo "$ROLES" | cut -d ',' -f1)" +ROLE2="$(echo "$ROLES" | cut -d ',' -f2)" +export ROLE1 ROLE2 + +if [ "$ROLE1" = 'core' ] && [ "$ROLE2" = 'core' ]; then + SEEDS="$NODE1,$NODE2" +elif [ "$ROLE1" = 'core' ]; then + SEEDS="$NODE1" +elif [ "$ROLE2" = 'core' ]; then + SEEDS="$NODE2" +else + echo "missing 'core' role in -r|--roles option" + exit 1 +fi +export SEEDS + start_cmd() { local index="$1" local nodehome @@ -33,11 +79,12 @@ start_cmd() { mkdir -p "${nodehome}/data" "${nodehome}/log" cat <<-EOF env DEBUG="${DEBUG:-0}" \ -EMQX_CLUSTER__STATIC__SEEDS="[\"$NODE1\",\"$NODE2\"]" \ +EMQX_NODE_NAME="emqx${index}@\$IP${index}" \ +EMQX_CLUSTER__STATIC__SEEDS="$SEEDS" \ EMQX_CLUSTER__DISCOVERY_STRATEGY=static \ +EMQX_NODE__DB_ROLE="\$ROLE${index}" \ EMQX_LOG__FILE_HANDLERS__DEFAULT__LEVEL="${EMQX_LOG__FILE_HANDLERS__DEFAULT__LEVEL:-debug}" \ EMQX_LOG__FILE_HANDLERS__DEFAULT__FILE="${nodehome}/log/emqx.log" \ -EMQX_NODE_NAME="emqx${index}@\$IP${index}" \ EMQX_NODE__COOKIE="${EMQX_NODE__COOKIE:-cookie1}" \ EMQX_LOG_DIR="${nodehome}/log" \ EMQX_NODE__DATA_DIR="${nodehome}/data" \