diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index 72fe741e2..2fdad18d4 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -6,7 +6,7 @@ on: - v* - e* branches: - - 'main-v4.?' + - 'main-v4.[0-9]?' pull_request: jobs: diff --git a/CHANGES-4.3.md b/CHANGES-4.3.md index dcde285b8..21fecb336 100644 --- a/CHANGES-4.3.md +++ b/CHANGES-4.3.md @@ -9,22 +9,33 @@ File format: - Use weight-2 heading for releases - One list item per change topic Change log ends with a list of GitHub PRs + ## v4.3.21 ### Enhancements -- TLS listener memory usage optimization - new option 'hibernate_after' to hibernate TLS process after idling -- TLS listener default buffer size to 4KB - Eliminate uncertainty that the buffer size is set by OS default - +- TLS listener memory usage optimization [#9005](https://github.com/emqx/emqx/pull/9005). + New config `listener.ssl.$NAME.hibernate_after` to hibernate TLS connection process after idling. + Hibernation can reduce RAM usage significantly, but may cost more CPU. + This configuration is by default disabled. + Our preliminary test shows a 50% of RAM usage decline when configured to '5s'. + +- TLS listener default buffer size to 4KB [#9007](https://github.com/emqx/emqx/pull/9007) + Eliminate uncertainty that the buffer size is set by OS default. + +- Fix delayed publish inaccurate caused by os time change. [#8908](https://github.com/emqx/emqx/pull/8908) + +- Disable authorization for `api/v4/emqx_prometheus` endpoint. [8955](https://github.com/emqx/emqx/pull/8955) + +- Added a test to prevent a last will testament message to be + published when a client is denied connection. [#8894](https://github.com/emqx/emqx/pull/8894) + ## v4.3.20 ### Bug fixes - Fix rule-engine update behaviour which may initialize actions for disabled rules. [#8849](https://github.com/emqx/emqx/pull/8849) - Fix JWT plugin don't support non-integer timestamp claims. [#8862](https://github.com/emqx/emqx/pull/8862) -- Fix delayed publish inaccurate caused by os time change. [#8908](https://github.com/emqx/emqx/pull/8908) - Fix a possible dead loop caused by shared subscriptions with `shared_dispatch_ack_enabled=true`. [#8918](https://github.com/emqx/emqx/pull/8918) - Fix dashboard binding IP address not working. [#8916](https://github.com/emqx/emqx/pull/8916) - Fix rule SQL topic matching to null values failed. [#8927](https://github.com/emqx/emqx/pull/8927) @@ -32,9 +43,6 @@ File format: `SELECT topic =~ 't' as r FROM "$events/client_connected"`. The topic is a null value as there's no such field in event `$events/client_connected`, so it should return false if match it to a topic. -- Added a test to prevent a last will testament message to be - published when a client is denied connection. [#8894](https://github.com/emqx/emqx/pull/8894) -- Disable authorization for `api/v4/emqx_prometheus` endpoint. [8955](https://github.com/emqx/emqx/pull/8955) ## v4.3.19 diff --git a/scripts/rel/cut4x.sh b/scripts/rel/cut4x.sh new file mode 100755 index 000000000..58131c757 --- /dev/null +++ b/scripts/rel/cut4x.sh @@ -0,0 +1,238 @@ +#!/usr/bin/env bash + +## cut a new 4.x release for EMQX (opensource or enterprise). + +set -euo pipefail +# ensure dir +cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." + +usage() { + cat < "A script that fills in boilerplate for appup files. @@ -109,7 +112,7 @@ changes, supervisor changes, process restarts and so on. Also the load order of the beam files might need updating.~n"), halt(0); warn_and_exit(false) -> - log("~nERROR: Incomplete appups found. Please inspect the output for more details.~n"), + logerr("Incomplete appups found. Please inspect the output for more details.~n", []), halt(1). prepare(Baseline, Options = #{make_command := MakeCommand, beams_dir := BeamDir}) -> @@ -474,8 +477,8 @@ check_appup(App, Upgrade, Downgrade, OldUpgrade, OldDowngrade) -> ok; {diffs, Diffs} -> set_invalid(), - log("ERROR: Appup file for '~p' is not complete.~n" - "Missing:~100p~n", [App, Diffs]), + logerr("Appup file for '~p' is not complete.~n" + "Missing:~100p~n", [App, Diffs]), notok end. @@ -494,7 +497,7 @@ render_appup(App, File, Up, Down) -> do_render_appup(File, Up, Down); {error, enoent} when IsCheck -> %% failed to read old file, exit - log("ERROR: ~s is missing", [File]), + logerr("~s is missing", [File]), set_invalid() end. @@ -580,8 +583,8 @@ diff_app(UpOrDown, App, case UpOrDown =:= up of true -> %% only log for the upgrade case because it would be the same result - log("ERROR: Application '~p' contains changes, but its version is not updated. ~s", - [App, format_changes(Changes)]); + logerr("Application '~p' contains changes, but its version is not updated. ~s", + [App, format_changes(Changes)]); false -> ok end; @@ -723,5 +726,8 @@ log(Msg) -> log(Msg, Args) -> io:format(standard_error, Msg, Args). +logerr(Msg, Args) -> + io:format(standard_error, ?RED ++ "ERROR: "++ Msg ++ ?RESET, Args). + otp_standard_apps() -> [ssl, mnesia, kernel, asn1, stdlib].