From 60ef87a4d4b4d7d050f3d4c52b9a6c82357129c6 Mon Sep 17 00:00:00 2001 From: William Yang Date: Wed, 10 Aug 2022 16:04:50 +0200 Subject: [PATCH 01/13] ci: 4.3 runners --- .github/workflows/build_slim_packages.yaml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 17e99c831..393117c2e 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -6,7 +6,7 @@ on: jobs: build: - runs-on: ubuntu-20.04 + runs-on: ${{ matrix.runs-on }} strategy: matrix: @@ -15,6 +15,16 @@ jobs: os: - ubuntu20.04 - centos7 + runs-on: + - aws-amd64 + - ubuntu-20.04 + use-self-hosted: + - ${{ github.repository_owner == 'emqx' }} + exclude: + - runs-on: ubuntu-20.04 + use-self-hosted: true + - runs-on: aws-amd64 + use-self-hosted: false container: emqx/build-env:${{ matrix.erl_otp }}-${{ matrix.os }} From f245b34c3401b04f6376ff2bac10da10b3567106 Mon Sep 17 00:00:00 2001 From: William Yang Date: Wed, 10 Aug 2022 17:32:48 +0200 Subject: [PATCH 02/13] ci: run test cases on self-hosted --- .github/workflows/run_test_cases.yaml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index b7869c74c..d971ef200 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -24,8 +24,19 @@ jobs: run: make proper run_common_test: - runs-on: ubuntu-20.04 - + runs-on: ${{ matrix.runs-on }} + strategy: + matrix: + runs-on: + - aws-amd64 + - ubuntu-20.04 + use-self-hosted: + - ${{ github.repository_owner == 'emqx' }} + exclude: + - runs-on: ubuntu-20.04 + use-self-hosted: true + - runs-on: aws-amd64 + use-self-hosted: false steps: - uses: actions/checkout@v2 - name: set edition From 977ac04d246d754e11a955e28dd2a2649d10a305 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Thu, 25 Aug 2022 17:53:41 -0300 Subject: [PATCH 03/13] chore: fix dialyzer errors --- .github/workflows/build_slim_packages.yaml | 7 +++ .../include/emqx_auth_mnesia.hrl | 6 ++ .../src/emqx_auth_mnesia_cli.erl | 2 +- .../emqx_exproto/src/emqx_exproto_channel.erl | 2 +- .../test/emqx_lua_hook_SUITE.erl | 29 +++++----- .../src/emqx_mgmt_api_clients.erl | 2 +- apps/emqx_rule_engine/include/rule_engine.hrl | 57 +++++++++++++------ .../src/emqx_rule_engine.appup.src | 18 ++++-- .../emqx_rule_engine/src/emqx_rule_engine.erl | 4 +- .../src/emqx_rule_runtime.erl | 2 +- .../src/emqx_rule_sqlparser.erl | 5 -- rebar.config | 2 +- src/emqx.appup.src | 42 +++++++++----- src/emqx.erl | 2 +- src/emqx_calendar.erl | 2 - src/emqx_channel.erl | 3 +- src/emqx_message.erl | 3 - src/emqx_shared_sub.erl | 2 +- 18 files changed, 116 insertions(+), 74 deletions(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 17e99c831..e0db564b8 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -33,6 +33,13 @@ jobs: run: git config --global --add safe.directory /__w/emqx/emqx - name: make xref run: make xref + - name: make dialyzer + run: | + # TODO: once dialyzer warnings are fixed in 4.4+, we may + # enforce this. + if [[ "$(./pkg-vsn.sh)" =~ 4.3.* ]]; then + make dialyzer + fi - name: build zip packages run: make ${EMQX_NAME}-zip - name: build deb/rpm packages diff --git a/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl b/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl index f8569ef8a..1c1798918 100644 --- a/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl +++ b/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl @@ -13,6 +13,12 @@ -type(created_at():: integer()). -record(emqx_user, { + login, + password, + created_at + }). + +-type(emqx_user() :: #emqx_user{ login :: login(), password :: binary(), created_at :: created_at() diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl index bf919f5bf..86572c0a6 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl @@ -58,7 +58,7 @@ insert_user(User = #emqx_user{login = Login}) -> [_|_] -> mnesia:abort(existed) end. --spec(add_default_user(clientid | username, tuple(), binary()) -> ok | {error, any()}). +-spec(add_default_user(clientid | username, binary(), binary()) -> ok | {error, any()}). add_default_user(Type, Key, Password) -> Login = {Type, Key}, case add_user(Login, Password) of diff --git a/apps/emqx_exproto/src/emqx_exproto_channel.erl b/apps/emqx_exproto/src/emqx_exproto_channel.erl index cf6229be3..4b354183e 100644 --- a/apps/emqx_exproto/src/emqx_exproto_channel.erl +++ b/apps/emqx_exproto/src/emqx_exproto_channel.erl @@ -159,7 +159,7 @@ init(ConnInfo = #{socktype := Socktype, Channel = #channel{gcli = #{channel => GRpcChann}, conninfo = NConnInfo1, clientinfo = ClientInfo, - conn_state = accepted, + conn_state = idle, timers = #{} }, case emqx_hooks:run_fold('client.connect', [NConnInfo], #{}) of diff --git a/apps/emqx_lua_hook/test/emqx_lua_hook_SUITE.erl b/apps/emqx_lua_hook/test/emqx_lua_hook_SUITE.erl index bb9247464..5b2ed75e7 100644 --- a/apps/emqx_lua_hook/test/emqx_lua_hook_SUITE.erl +++ b/apps/emqx_lua_hook/test/emqx_lua_hook_SUITE.erl @@ -75,7 +75,7 @@ case01(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{from = <<"myclient">>, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{username => <<"tester">>}}, + Msg = #message{id = emqx_guid:gen(), from = <<"myclient">>, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{username => <<"tester">>}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{payload = <<"hello">>}, Ret). @@ -90,7 +90,7 @@ case02(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{from = <<"myclient">>, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{username => <<"tester">>}}, + Msg = #message{id = emqx_guid:gen(), from = <<"myclient">>, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{username => <<"tester">>}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{headers = #{username => <<"tester">>, allow_publish => false}}, Ret). @@ -124,7 +124,7 @@ case04(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{from = <<"broker">>, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{username => <<"tester">>}}, + Msg = #message{id = emqx_guid:gen(), from = <<"broker">>, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{username => <<"tester">>}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{payload = <<"hello broker">>}, Ret). @@ -155,7 +155,7 @@ case12(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.delivered', [#{clientid => <<"myclient">>, username => <<"myuser">>}], Msg), ?assertEqual(Msg#message{payload = <<"hello broker">>}, Ret). @@ -470,8 +470,9 @@ case101(_Config) -> "\nend", ok = file:write_file(ScriptName2, Code2), ok = emqx_lua_hook:load_scripts(), - Ret = emqx_hooks:run_fold('message.publish',[], #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}), - ?assertEqual(#message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"hello">>, headers = #{}}, Ret), + ID = emqx_guid:gen(), + Ret = emqx_hooks:run_fold('message.publish',[], #message{id = ID, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}), + ?assertEqual(#message{id = ID, qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"hello">>, headers = #{}}, Ret), TopicTable = [{<<"a/b/c">>, [qos, 1]}, {<<"d/+/e">>, [{qos, 2}]}], Ret2 = emqx_hooks:run_fold('client.subscribe',[#{clientid => <<"myclient">>, username => <<"myuser">>}, #{}], TopicTable), @@ -488,7 +489,7 @@ case110(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{topic = <<"changed/topic">>, payload = <<"hello">>}, Ret). @@ -504,7 +505,7 @@ case111(_Config) -> ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), emqx_ctl:run_command(["luahook", "unload", ScriptName]), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg, Ret). @@ -523,7 +524,7 @@ case112(_Config) -> timer:sleep(100), emqx_ctl:run_command(["luahook", "load", "abc.lua"]), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{topic = <<"changed/topic">>, payload = <<"hello">>}, Ret). @@ -541,7 +542,7 @@ case113(_Config) -> file:delete(ScriptDisabled), emqx_ctl:run_command(["luahook", "disable", "abc.lua"]), % this command will rename "abc.lua" to "abc.lua.x" - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg, Ret), true = filelib:is_file(ScriptDisabled). @@ -558,7 +559,7 @@ case114(_Config) -> ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), emqx_ctl:run_command(["luahook", "enable", "abc.lua"]), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{topic = <<"changed/topic">>, payload = <<"hello">>}, Ret). @@ -578,7 +579,7 @@ case115(_Config) -> ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), emqx_ctl:run_command(["luahook", "reload", "abc.lua"]), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{topic = <<"changed/topic">>, payload = <<"hello">>}, Ret), @@ -636,7 +637,7 @@ case204(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg#message{payload = <<"123_Z">>}, Ret). @@ -651,7 +652,7 @@ case205(_Config) -> "\nend", ok = file:write_file(ScriptName, Code), ok = emqx_lua_hook:load_scripts(), - Msg = #message{qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, + Msg = #message{id = emqx_guid:gen(), qos = 2, flags = #{retain => true}, topic = <<"a/b/c">>, payload = <<"123">>, headers = #{}}, Ret = emqx_hooks:run_fold('message.publish',[], Msg), ?assertEqual(Msg, Ret). diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index 91ebd55c5..da1aeb12d 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -370,7 +370,7 @@ run_fuzzy_match(E = {_, _, Stats}, [{Key, '=<', Int}|Fuzzy]) -> %%-------------------------------------------------------------------- %% QueryString to Match Spec --spec qs2ms(list()) -> ets:match_spec(). +-spec qs2ms(list()) -> {ets:match_spec(), [{_Key, _Symbol, _Val}]}. qs2ms(Qs) -> {MatchHead, Conds, FuzzyStats} = qs2ms(Qs, 2, #{}, [], []), {[{{'$1', MatchHead, '_'}, Conds, ['$_']}], FuzzyStats}. diff --git a/apps/emqx_rule_engine/include/rule_engine.hrl b/apps/emqx_rule_engine/include/rule_engine.hrl index 858d9b9b6..04cfeb06f 100644 --- a/apps/emqx_rule_engine/include/rule_engine.hrl +++ b/apps/emqx_rule_engine/include/rule_engine.hrl @@ -61,28 +61,49 @@ }). -record(action_instance, - { id :: action_instance_id() - , name :: action_name() - , fallbacks :: list(#action_instance{}) - , args :: #{binary() => term()} %% the args got from API for initializing action_instance + { id + , name + , fallbacks + , args %% the args got from API for initializing action_instance }). +-type(action_instance() + :: #action_instance{ id :: action_instance_id() + , name :: action_name() + , fallbacks :: list(#action_instance{}) + , args :: #{binary() => term()} %% the args got from API for initializing action_instance + }). -record(rule, - { id :: rule_id() - , for :: list(topic()) - , rawsql :: binary() - , is_foreach :: boolean() - , fields :: list() - , doeach :: term() - , incase :: list() - , conditions :: tuple() - , on_action_failed :: continue | stop - , actions :: list(#action_instance{}) - , enabled :: boolean() - , created_at :: integer() %% epoch in millisecond precision - , description :: binary() - , state = normal :: atom() + { id + , for + , rawsql + , is_foreach + , fields + , doeach + , incase + , conditions + , on_action_failed + , actions + , enabled + , created_at %% epoch in millisecond precision + , description + , state = normal }). +-type(rule() :: #rule{ id :: rule_id() + , for :: list(topic()) + , rawsql :: binary() + , is_foreach :: boolean() + , fields :: list() + , doeach :: term() + , incase :: list() + , conditions :: tuple() + , on_action_failed :: continue | stop + , actions :: list(#action_instance{}) + , enabled :: boolean() + , created_at :: integer() %% epoch in millisecond precision + , description :: binary() + , state :: normal | atom() + }). -record(resource, { id :: resource_id() diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src index f50c1a368..a9cb51d8e 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -2,17 +2,20 @@ %% Unless you know what you are doing, DO NOT edit manually!! {VSN, [{"4.3.13", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, {"4.3.12", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, {"4.3.11", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, @@ -178,17 +181,20 @@ {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], [{"4.3.13", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, {"4.3.12", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, {"4.3.11", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_validator,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.erl b/apps/emqx_rule_engine/src/emqx_rule_engine.erl index 872e314cb..d5c3ba92c 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.erl @@ -64,7 +64,6 @@ -export([alarm_name_of_resource_down/2]). -endif. --type(rule() :: #rule{}). -type(action() :: #action{}). -type(resource() :: #resource{}). -type(resource_type() :: #resource_type{}). @@ -172,7 +171,6 @@ module_attributes(Module) -> %% APIs for rules and resources %%------------------------------------------------------------------------------ --dialyzer([{nowarn_function, [create_rule/1, rule_id/0]}]). -spec create_rule(map()) -> {ok, rule()} | {error, term()}. create_rule(Params = #{rawsql := Sql, actions := ActArgs}) -> case emqx_rule_sqlparser:parse_select(Sql) of @@ -307,7 +305,7 @@ do_check_and_update_resource(#{id := Id, type := Type, description := NewDescrip Config = emqx_rule_validator:validate_params(NewConfig, ParamSpec), case test_resource(#{type => Type, config => NewConfig}) of ok -> - delete_resource(Id), + _ = delete_resource(Id), _ = ?CLUSTER_CALL(init_resource, [Module, Create, Id, Config]), emqx_rule_registry:add_resource(#resource{ id = Id, diff --git a/apps/emqx_rule_engine/src/emqx_rule_runtime.erl b/apps/emqx_rule_engine/src/emqx_rule_runtime.erl index 8b6d6f915..794c70dfd 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_runtime.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_runtime.erl @@ -52,7 +52,7 @@ apply_rules([], _Input) -> apply_rules([#rule{enabled = false}|More], Input) -> apply_rules(More, Input); apply_rules([Rule|More], Input) -> - apply_rule(Rule, Input), + _ = apply_rule(Rule, Input), apply_rules(More, Input). apply_rule(Rule = #rule{id = RuleId}, Input) -> diff --git a/apps/emqx_rule_engine/src/emqx_rule_sqlparser.erl b/apps/emqx_rule_engine/src/emqx_rule_sqlparser.erl index 82d3cfb64..5fbd9337c 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_sqlparser.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_sqlparser.erl @@ -48,10 +48,6 @@ -export_type([select/0]). -%% Dialyzer gives up on the generated code. -%% probably due to stack depth, or inlines. --dialyzer({nowarn_function, [parse_select/1]}). - %% Parse one select statement. -spec(parse_select(string() | binary()) -> {ok, select()} | {parse_error, term()} | {lex_error, term()}). @@ -105,4 +101,3 @@ select_from(#select{from = From}) -> -spec(select_where(select()) -> tuple()). select_where(#select{where = Where}) -> Where. - diff --git a/rebar.config b/rebar.config index 03026cacc..b23526949 100644 --- a/rebar.config +++ b/rebar.config @@ -55,7 +55,7 @@ , {replayq, {git, "https://github.com/emqx/replayq", {tag, "0.3.4"}}} , {pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {branch, "2.0.4"}}} , {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3.1"}}} - , {rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.2"}}} + , {rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.4"}}} , {recon, {git, "https://github.com/ferd/recon", {tag, "2.5.1"}}} , {observer_cli, "1.6.1"} % NOTE: depends on recon 2.5.1 , {getopt, "1.0.1"} diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 27c7d3e1a..9d0787e79 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -2,19 +2,22 @@ %% Unless you know what you are doing, DO NOT edit manually!! {VSN, [{"4.3.19", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}]}, {"4.3.18", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_plugins,brutal_purge,soft_purge,[]}]}, {"4.3.17", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, @@ -26,7 +29,8 @@ {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}]}, {"4.3.16", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_session,brutal_purge,soft_purge,[]}, @@ -45,7 +49,8 @@ {load_module,emqx_mqtt_caps,brutal_purge,soft_purge,[]}, {load_module,emqx_topic,brutal_purge,soft_purge,[]}]}, {"4.3.15", - [{load_module,emqx_cm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {add_module,emqx_calendar}, {load_module,emqx_topic,brutal_purge,soft_purge,[]}, @@ -72,7 +77,8 @@ {update,emqx_os_mon,{advanced,[]}}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.3.14", - [{load_module,emqx_cm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {add_module,emqx_calendar}, {load_module,emqx_topic,brutal_purge,soft_purge,[]}, {add_module,emqx_exclusive_subscription}, @@ -101,7 +107,8 @@ {update,emqx_os_mon,{advanced,[]}}, {load_module,emqx_hooks,brutal_purge,soft_purge,[]}]}, {"4.3.13", - [{add_module,emqx_calendar}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {add_module,emqx_calendar}, {load_module,emqx_topic,brutal_purge,soft_purge,[]}, {add_module,emqx_exclusive_subscription}, {apply,{emqx_exclusive_subscription,on_add_module,[]}}, @@ -701,19 +708,22 @@ {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], [{"4.3.19", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}]}, {"4.3.18", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_plugins,brutal_purge,soft_purge,[]}]}, {"4.3.17", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, @@ -725,7 +735,8 @@ {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}]}, {"4.3.16", - [{load_module,emqx_misc,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_session,brutal_purge,soft_purge,[]}, @@ -744,7 +755,8 @@ {apply,{emqx_exclusive_subscription,on_delete_module,[]}}, {delete_module,emqx_exclusive_subscription}]}, {"4.3.15", - [{load_module,emqx_cm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {delete_module,emqx_calendar}, {apply,{emqx_exclusive_subscription,on_delete_module,[]}}, @@ -770,7 +782,8 @@ {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.3.14", - [{load_module,emqx_cm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {delete_module,emqx_calendar}, {apply,{emqx_exclusive_subscription,on_delete_module,[]}}, {delete_module,emqx_exclusive_subscription}, @@ -798,7 +811,8 @@ {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_hooks,brutal_purge,soft_purge,[]}]}, {"4.3.13", - [{delete_module,emqx_calendar}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {delete_module,emqx_calendar}, {apply,{emqx_exclusive_subscription,on_delete_module,[]}}, {delete_module,emqx_exclusive_subscription}, {load_module,emqx_topic,brutal_purge,soft_purge,[]}, diff --git a/src/emqx.erl b/src/emqx.erl index 29c5d7020..469a4672b 100644 --- a/src/emqx.erl +++ b/src/emqx.erl @@ -236,7 +236,7 @@ shutdown(Reason) -> reboot() -> case is_application_running(emqx_dashboard) of true -> - application:stop(emqx_dashboard), %% dashboard must be started after mnesia + _ = application:stop(emqx_dashboard), %% dashboard must be started after mnesia lists:foreach(fun application:start/1 , default_started_applications()), application:start(emqx_dashboard); diff --git a/src/emqx_calendar.erl b/src/emqx_calendar.erl index 0c094df81..71fff3182 100644 --- a/src/emqx_calendar.erl +++ b/src/emqx_calendar.erl @@ -317,7 +317,6 @@ trans_x_second(FromUnit, ToUnit, Time) -> end, padding(XSecond, Len). -do_trans_x_second(second, second, Time) -> Time div 60; do_trans_x_second(second, _, _Time) -> 0; do_trans_x_second(millisecond, millisecond, Time) -> Time rem 1000; @@ -433,4 +432,3 @@ dm(9) -> 243; dm(10) -> 273; dm(11) -> 304; dm(12) -> 334. - diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index f422bfcf9..939be4270 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -1702,8 +1702,7 @@ disconnect_reason(?RC_SUCCESS) -> normal; disconnect_reason(ReasonCode) -> emqx_reason_codes:name(ReasonCode). reason_code(takeovered) -> ?RC_SESSION_TAKEN_OVER; -reason_code(discarded) -> ?RC_SESSION_TAKEN_OVER; -reason_code(_) -> ?RC_NORMAL_DISCONNECTION. +reason_code(discarded) -> ?RC_SESSION_TAKEN_OVER. %%-------------------------------------------------------------------- %% Helper functions diff --git a/src/emqx_message.erl b/src/emqx_message.erl index 5a0ab3bbd..40779c86b 100644 --- a/src/emqx_message.erl +++ b/src/emqx_message.erl @@ -343,8 +343,6 @@ format(#message{id = Id, [printable_msg_id(Id), QoS, Topic, From, format(flags, Flags), format(headers, Headers)]). -printable_msg_id(undefined) -> - <<>>; printable_msg_id(Id) -> emqx_guid:to_hexstr(Id). @@ -352,4 +350,3 @@ format(flags, Flags) -> io_lib:format("~p", [[Flag || {Flag, true} <- maps:to_list(Flags)]]); format(headers, Headers) -> io_lib:format("~p", [Headers]). - diff --git a/src/emqx_shared_sub.erl b/src/emqx_shared_sub.erl index 3f67c225d..337d63d15 100644 --- a/src/emqx_shared_sub.erl +++ b/src/emqx_shared_sub.erl @@ -251,7 +251,7 @@ maybe_nack_dropped(Msg) -> %% For retry Ref we can't reject a message if inflight is full, so we mark it as %% acknowledged and put it into mqueue - {_Sender, {retry, _Group, _Ref}} -> maybe_ack(Msg), store; + {_Sender, {retry, _Group, _Ref}} -> _ = maybe_ack(Msg), store; %% This clause is for backward compatibility Ack -> From 64704c3e1334ac2559755bf09678a17db5e89eab Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Fri, 26 Aug 2022 14:34:56 -0300 Subject: [PATCH 04/13] ci: cache dialyzer PLTs --- .github/workflows/build_slim_packages.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index e0db564b8..7722d11a2 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -31,6 +31,11 @@ jobs: fi - name: fix-git-unsafe-repository run: git config --global --add safe.directory /__w/emqx/emqx + - uses: actions/cache@v2 + with: + # dialyzer PLTs + path: ~/.cache/rebar3/ + key: dialyer-${{ matrix.erl_otp }} - name: make xref run: make xref - name: make dialyzer From f6c565fc9e6eb64722e975e20afc50bfac43297d Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Mon, 29 Aug 2022 11:08:10 +0200 Subject: [PATCH 05/13] fix(emqx): Check Erlang start after su command When installed from RPM or DEB, In case EMQX in started by root, the boot script changes user to emqx and then re-enter with the same args. Prior to this change, the Erlang start check is done before su, causing it to be checked twice. This commit moves the Erlang start check to after th su --- bin/emqx | 86 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/bin/emqx b/bin/emqx index f129a8447..66696052e 100755 --- a/bin/emqx +++ b/bin/emqx @@ -37,49 +37,6 @@ ERTS_LIB_DIR="$ERTS_DIR/../lib" # the 'x' attributes may get lost if the files are extracted from a relup package find "$BINDIR" -exec chmod a+x {} \; -# Echo to stderr on errors -echoerr() { echo "$*" 1>&2; } - -die() { - set +x - echoerr "ERROR: $1" - errno=${2:-1} - exit "$errno" -} - -assert_node_alive() { - if ! relx_nodetool "ping" > /dev/null; then - die "node_is_not_running!" 1 - fi -} - -check_erlang_start() { - # set ERL_CRASH_DUMP_BYTES to zero so it will not write a crash dump file - env ERL_CRASH_DUMP_BYTES=0 "$BINDIR/$PROGNAME" -boot "$REL_DIR/start_clean" -eval "crypto:start(),halt()" -} - -if ! check_erlang_start >/dev/null 2>&1; then - BUILT_ON="$(head -1 "${REL_DIR}/BUILT_ON")" - ## failed to start, might be due to missing libs, try to be portable - export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH" - if ! check_erlang_start; then - ## it's hopeless - echoerr "FATAL: Unable to start Erlang." - echoerr "Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed." - echoerr "Also ensure it's running on the correct platform," - echoerr "this EMQX release is built for $BUILT_ON" - exit 1 - fi - echoerr "There seem to be missing dynamic libs from the OS." - echoerr "Using libs from ${DYNLIBS_DIR} instead." - echoerr "NOTE: EMQX's rpm or deb package installation is recommended!" -fi - -## backward compatible -if [ -d "$ERTS_DIR/lib" ]; then - export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" -fi - # cuttlefish try to read environment variables starting with "EMQX_" export CUTTLEFISH_ENV_OVERRIDE_PREFIX='EMQX_' @@ -261,6 +218,49 @@ if [ "$ES" -ne 0 ]; then exit $ES fi +# Echo to stderr on errors +echoerr() { echo "$*" 1>&2; } + +die() { + set +x + echoerr "ERROR: $1" + errno=${2:-1} + exit "$errno" +} + +assert_node_alive() { + if ! relx_nodetool "ping" > /dev/null; then + die "node_is_not_running!" 1 + fi +} + +check_erlang_start() { + # set ERL_CRASH_DUMP_BYTES to zero so it will not write a crash dump file + env ERL_CRASH_DUMP_BYTES=0 "$BINDIR/$PROGNAME" -boot "$REL_DIR/start_clean" -eval "crypto:start(),halt()" +} + +if ! check_erlang_start >/dev/null 2>&1; then + BUILT_ON="$(head -1 "${REL_DIR}/BUILT_ON")" + ## failed to start, might be due to missing libs, try to be portable + export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH" + if ! check_erlang_start; then + ## it's hopeless + echoerr "FATAL: Unable to start Erlang." + echoerr "Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed." + echoerr "Also ensure it's running on the correct platform," + echoerr "this EMQX release is built for $BUILT_ON" + exit 1 + fi + echoerr "There seem to be missing dynamic libs from the OS." + echoerr "Using libs from ${DYNLIBS_DIR} instead." + echoerr "NOTE: EMQX's rpm or deb package installation is recommended!" +fi + +## backward compatible (old EMQX versions does this) +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 From 886b084a67d212a5845ba126f3e228568b2da6a7 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Mon, 29 Aug 2022 11:14:41 +0200 Subject: [PATCH 06/13] docs: update CHANGES-4.3.md --- CHANGES-4.3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES-4.3.md b/CHANGES-4.3.md index 42148dc6a..a250de823 100644 --- a/CHANGES-4.3.md +++ b/CHANGES-4.3.md @@ -34,6 +34,7 @@ File format: - Fix ExHook can't be un-hooked if the grpc service stop first. [#8725](https://github.com/emqx/emqx/pull/8725) - Fix the problem that ExHook cannot continue hook chains execution for mismatched topics. [#8807](https://github.com/emqx/emqx/pull/8807) - Fix GET `/listeners/` crashes when listener is not ready. [#8752](https://github.com/emqx/emqx/pull/8752) +- Fix repeated warning messages in bin/emqx [#8824](https://github.com/emqx/emqx/pull/8824) ## v4.3.18 From 78ec03f23b5b08307b0b8aa3c0c5fc6ebdaedef0 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 30 Aug 2022 15:03:21 +0800 Subject: [PATCH 07/13] chore: add emqx_ctl acl list to show all acls --- apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl index 44850d6a6..34f9777b9 100644 --- a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl +++ b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl @@ -119,6 +119,7 @@ cli(_) -> emqx_ctl:usage([ {"acl list clientid", "List clientid acls"} , {"acl list username", "List username acls"} , {"acl list _all", "List $all acls"} + , {"acl list ", "List all acls"} , {"acl show clientid ", "Lookup clientid acl detail"} , {"acl show username ", "Lookup username acl detail"} , {"acl aad clientid ", "Add clientid acl"} From 9258f5a2aa194eb56d22aefe7cdb424813b08e80 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 30 Aug 2022 15:04:00 +0800 Subject: [PATCH 08/13] chore: add emqx restart command tip --- bin/emqx | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/emqx b/bin/emqx index 66696052e..306efe527 100755 --- a/bin/emqx +++ b/bin/emqx @@ -159,6 +159,7 @@ usage() { echo " console: Start EMQX in an interactive Erlang shell" echo " foreground: Start EMQX in foreground mode without an interactive shell" echo " stop: Stop the running EMQX node" + echo " restart: Restart the running EMQX node" echo " ctl: Administration commands, execute '$REL_NAME ctl help' for more details" echo '' echo "More:" From e4992b8f591c5c6c9dafefa041d705ea30cc4a65 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 30 Aug 2022 15:07:45 +0800 Subject: [PATCH 09/13] chore: update mnesia_acl appup.src --- .../emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src index 8fa8384d4..7906449db 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src @@ -1,13 +1,15 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{<<"4\\.3\\.7">>, - [{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]}, + [{"4.3.7", + [{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[5-6]">>, [{load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_db,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[0-3]">>, [{load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, @@ -28,14 +30,18 @@ {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.7",[{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]}, + [{"4.3.7", + [{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[5-6]">>, [{load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_db,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[0-3]">>, [{load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, @@ -56,5 +62,6 @@ {load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_db,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}]}. From df51af0ce6c0b4ec9a67f01b870b83be1364bd30 Mon Sep 17 00:00:00 2001 From: zhouzb Date: Tue, 30 Aug 2022 17:27:54 +0800 Subject: [PATCH 10/13] chore: bump vsn --- deploy/charts/emqx/Chart.yaml | 4 ++-- include/emqx_release.hrl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 0d00f8948..7667ab443 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -13,8 +13,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 4.3.18 +version: 4.3.19 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 4.3.18 +appVersion: 4.3.19 diff --git a/include/emqx_release.hrl b/include/emqx_release.hrl index ed989ddc2..9e703b64b 100644 --- a/include/emqx_release.hrl +++ b/include/emqx_release.hrl @@ -29,7 +29,7 @@ -ifndef(EMQX_ENTERPRISE). --define(EMQX_RELEASE, {opensource, "4.3.19-beta.4"}). +-define(EMQX_RELEASE, {opensource, "4.3.19"}). -else. From 48aab7dafff5b056b2e96fb908f831cfdaa9233a Mon Sep 17 00:00:00 2001 From: Rory Z Date: Tue, 30 Aug 2022 18:09:25 +0800 Subject: [PATCH 11/13] chore: use minikube instead k3s --- .github/workflows/run_fvt_tests.yaml | 32 +++++----------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/.github/workflows/run_fvt_tests.yaml b/.github/workflows/run_fvt_tests.yaml index 601ab304f..02d7caa3d 100644 --- a/.github/workflows/run_fvt_tests.yaml +++ b/.github/workflows/run_fvt_tests.yaml @@ -80,30 +80,18 @@ jobs: echo "TARGET=emqx/emqx" >> $GITHUB_ENV make emqx-docker fi - - name: install k3s - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" - run: | - sudo sh -c "echo \"127.0.0.1 $(hostname)\" >> /etc/hosts" - curl -sfL https://get.k3s.io | sh - - sudo chmod 644 /etc/rancher/k3s/k3s.yaml - kubectl cluster-info + - run: minikube start - name: install helm - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 sudo chmod 700 get_helm.sh sudo ./get_helm.sh helm version - name: run emqx on chart - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" timeout-minutes: 5 run: | version=$(./pkg-vsn.sh) - sudo docker save ${TARGET}:$version -o emqx.tar.gz - sudo k3s ctr image import emqx.tar.gz + minikube image load ${TARGET}:$version sed -i -r "s/^appVersion: .*$/appVersion: \"${version}\"/g" deploy/charts/emqx/Chart.yaml sed -i '/emqx_telemetry/d' deploy/charts/emqx/values.yaml @@ -128,22 +116,16 @@ jobs: done - name: get emqx-0 pods log if: failure() - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | kubectl describe pods emqx-0 kubectl logs emqx-0 - name: get emqx-1 pods log if: failure() - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | kubectl describe pods emqx-1 kubectl logs emqx-1 - name: get emqx-2 pods log if: failure() - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | kubectl describe pods emqx-2 kubectl logs emqx-2 @@ -157,16 +139,12 @@ jobs: pip install pytest echo "$HOME/.local/bin" >> $GITHUB_PATH - name: run paho test - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | - emqx_svc=$(kubectl get svc --namespace default emqx -o jsonpath="{.spec.clusterIP}") - emqx1=$(kubectl get pods emqx-1 -o jsonpath='{.status.podIP}') - emqx2=$(kubectl get pods emqx-2 -o jsonpath='{.status.podIP}') + nohup kubectl port-forward svc emqx 1883:1883 & - pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic --host $emqx_svc + pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic RESULT=$? - pytest -v paho.mqtt.testing/interoperability/test_cluster --host1 $emqx1 --host2 $emqx2 + pytest -v paho.mqtt.testing/interoperability/test_cluster RESULT=$((RESULT + $?)) if [ 0 -ne $RESULT ]; then kubectl logs emqx-1 From eaa21b15cf2d1e8b27a806f55958d3892c6375da Mon Sep 17 00:00:00 2001 From: zhouzb Date: Tue, 30 Aug 2022 19:57:10 +0800 Subject: [PATCH 12/13] chore: fix run_fvt_tests workflow --- .github/workflows/run_fvt_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_fvt_tests.yaml b/.github/workflows/run_fvt_tests.yaml index 02d7caa3d..dec677e9c 100644 --- a/.github/workflows/run_fvt_tests.yaml +++ b/.github/workflows/run_fvt_tests.yaml @@ -140,7 +140,7 @@ jobs: echo "$HOME/.local/bin" >> $GITHUB_PATH - name: run paho test run: | - nohup kubectl port-forward svc emqx 1883:1883 & + nohup kubectl port-forward svc/emqx 1883:1883 & pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic RESULT=$? From b4cb2566129f59c7563b37d8b8aa3b2369c25f55 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Tue, 30 Aug 2022 17:02:07 -0300 Subject: [PATCH 13/13] chore: bump app vsns and update appups --- apps/emqx_exproto/src/emqx_exproto.app.src | 2 +- .../src/emqx_management.app.src | 2 +- .../src/emqx_rule_engine.app.src | 2 +- .../src/emqx_rule_engine.appup.src | 34 +++++++----- src/emqx.app.src | 2 +- src/emqx.appup.src | 54 +++++++++++++------ 6 files changed, 63 insertions(+), 33 deletions(-) diff --git a/apps/emqx_exproto/src/emqx_exproto.app.src b/apps/emqx_exproto/src/emqx_exproto.app.src index a267d1daf..98610a40c 100644 --- a/apps/emqx_exproto/src/emqx_exproto.app.src +++ b/apps/emqx_exproto/src/emqx_exproto.app.src @@ -1,6 +1,6 @@ {application, emqx_exproto, [{description, "EMQ X Extension for Protocol"}, - {vsn, "4.3.10"}, %% 4.3.3 is used by ee + {vsn, "4.3.11"}, %% 4.3.3 is used by ee {modules, []}, {registered, []}, {mod, {emqx_exproto_app, []}}, diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index 932ef704e..17157a4e5 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -1,6 +1,6 @@ {application, emqx_management, [{description, "EMQ X Management API and CLI"}, - {vsn, "4.4.7"}, % strict semver, bump manually! + {vsn, "4.4.8"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_management_sup]}, {applications, [kernel,stdlib,emqx_plugin_libs,minirest]}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src index 31d0a79a1..5d7b35372 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src @@ -1,6 +1,6 @@ {application, emqx_rule_engine, [{description, "EMQ X Rule Engine"}, - {vsn, "4.4.8"}, % strict semver, bump manually! + {vsn, "4.4.9"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_rule_engine_sup, emqx_rule_registry]}, {applications, [kernel,stdlib,rulesql,getopt]}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src index 81510a06f..d2e301245 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -1,13 +1,18 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{<<"4\\.4\\.[6-7]">>, - [{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, - {"4.4.5", + [{"4.4.8", [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[6-7]">>, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, + {"4.4.5", + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -79,13 +84,18 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{<<"4\\.4\\.[6-7]">>, - [{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, - {"4.4.5", + [{"4.4.8", [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[6-7]">>, + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, + {"4.4.5", + [{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_validator,brutal_purge,soft_purge,[]}, diff --git a/src/emqx.app.src b/src/emqx.app.src index 01bcf5ab2..53baed2c5 100644 --- a/src/emqx.app.src +++ b/src/emqx.app.src @@ -6,7 +6,7 @@ %% the emqx `release' version, which in turn is comprised of several %% apps, one of which is this. See `emqx_release.hrl' for more %% info. - {vsn, "4.4.8"}, % strict semver, bump manually! + {vsn, "4.4.9"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [ kernel diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 5a3422e0c..bc34d7ac6 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -1,8 +1,12 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.7", - [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, + [{"4.4.8", + [{load_module,emqx_cm,brutal_purge,soft_purge,[]}, + {load_module,emqx_message,brutal_purge,soft_purge,[]}]}, + {"4.4.7", + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, @@ -10,7 +14,8 @@ {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.6", - [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, @@ -18,7 +23,8 @@ {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}]}, {"4.4.5", - [{load_module,emqx,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, @@ -30,7 +36,8 @@ {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_session,brutal_purge,soft_purge,[]}]}, {"4.4.4", - [{load_module,emqx,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, @@ -50,7 +57,8 @@ {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {load_module,emqx_session,brutal_purge,soft_purge,[]}]}, {"4.4.3", - [{load_module,emqx,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, {add_module,emqx_calendar}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, @@ -78,7 +86,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_relup}]}, {"4.4.2", - [{add_module,emqx_calendar}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {add_module,emqx_calendar}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, @@ -108,7 +117,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_relup}]}, {"4.4.1", - [{load_module,emqx_packet,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_packet,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {add_module,emqx_exclusive_subscription}, @@ -186,8 +196,12 @@ {load_module,emqx_message,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.4.7", - [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, + [{"4.4.8", + [{load_module,emqx_cm,brutal_purge,soft_purge,[]}, + {load_module,emqx_message,brutal_purge,soft_purge,[]}]}, + {"4.4.7", + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, @@ -195,7 +209,8 @@ {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.6", - [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, @@ -203,7 +218,8 @@ {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}]}, {"4.4.5", - [{load_module,emqx,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, @@ -215,7 +231,8 @@ {load_module,emqx_shared_sub,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}]}, {"4.4.4", - [{load_module,emqx,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_session,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, @@ -235,7 +252,8 @@ {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_metrics,brutal_purge,soft_purge,[]}]}, {"4.4.3", - [{load_module,emqx,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, @@ -257,12 +275,13 @@ {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, {update,emqx_os_mon,{advanced,[]}}, - {load_module,emqx_metrics, brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_relup}]}, {"4.4.2", - [{load_module,emqx_broker,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, {load_module,emqx_mqtt_caps,brutal_purge,soft_purge,[]}, @@ -291,7 +310,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_relup}]}, {"4.4.1", - [{load_module,emqx_broker,brutal_purge,soft_purge,[]}, + [{load_module,emqx_message,brutal_purge,soft_purge,[]}, + {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {update,emqx_broker_sup,supervisor}, {load_module,emqx_mqtt_caps,brutal_purge,soft_purge,[]}, {load_module,emqx_topic,brutal_purge,soft_purge,[]},