From cf8432227abbbdfba44f3c2e96f2b153dcb69ee3 Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Thu, 2 Feb 2023 13:40:29 +0100 Subject: [PATCH 1/9] ci: always run static_checks --- .github/workflows/build_slim_packages.yaml | 4 ---- .github/workflows/run_test_cases.yaml | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index bfdeb1fb8..88e454860 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -55,10 +55,6 @@ jobs: run: | make ${EMQX_NAME}-tgz ./scripts/pkg-tests.sh ${EMQX_NAME}-tgz - - name: run static checks - if: contains(matrix.os, 'ubuntu') - run: | - make static_checks - name: build and test deb/rpm packages run: | make ${EMQX_NAME}-pkg diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index 2d9d2f01e..ac0edef13 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -77,6 +77,7 @@ jobs: make ensure-rebar3 # fetch all deps and compile make ${{ matrix.profile }} + make static_checks make test-compile cd .. zip -ryq source.zip source/* source/.[^.]* From 5b1e9764126f371ea3d2a94b2801947e0306d6e3 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 13:56:09 +0100 Subject: [PATCH 2/9] chore: upgrade replayq from 0.3.6 to 0.3.7 only included a dialyzer fix --- mix.exs | 2 +- rebar.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index c6e497d37..6fbddb28b 100644 --- a/mix.exs +++ b/mix.exs @@ -58,7 +58,7 @@ defmodule EMQXUmbrella.MixProject do {:grpc, github: "emqx/grpc-erl", tag: "0.6.7", override: true}, {:minirest, github: "emqx/minirest", tag: "1.3.7", override: true}, {:ecpool, github: "emqx/ecpool", tag: "0.5.3", override: true}, - {:replayq, github: "emqx/replayq", tag: "0.3.6", override: true}, + {:replayq, github: "emqx/replayq", tag: "0.3.7", override: true}, {:pbkdf2, github: "emqx/erlang-pbkdf2", tag: "2.0.4", override: true}, {:emqtt, github: "emqx/emqtt", tag: "1.7.0-rc.2", override: true}, {:rulesql, github: "emqx/rulesql", tag: "0.1.4"}, diff --git a/rebar.config b/rebar.config index 4a35641c4..e61aac544 100644 --- a/rebar.config +++ b/rebar.config @@ -60,7 +60,7 @@ , {grpc, {git, "https://github.com/emqx/grpc-erl", {tag, "0.6.7"}}} , {minirest, {git, "https://github.com/emqx/minirest", {tag, "1.3.7"}}} , {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.3"}}} - , {replayq, {git, "https://github.com/emqx/replayq.git", {tag, "0.3.6"}}} + , {replayq, {git, "https://github.com/emqx/replayq.git", {tag, "0.3.7"}}} , {pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}} , {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.7.0-rc.2"}}} , {rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.4"}}} From c0d478bd414f125d4eb10a76f82b1f083a2965de Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 13:59:28 +0100 Subject: [PATCH 3/9] fix(buffer_worker): type spec --- apps/emqx_resource/include/emqx_resource.hrl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/emqx_resource/include/emqx_resource.hrl b/apps/emqx_resource/include/emqx_resource.hrl index 7464eb4f8..ce4e02c2a 100644 --- a/apps/emqx_resource/include/emqx_resource.hrl +++ b/apps/emqx_resource/include/emqx_resource.hrl @@ -31,7 +31,9 @@ pick_key => term(), timeout => timeout(), expire_at => infinity | integer(), - async_reply_fun => reply_fun() + async_reply_fun => reply_fun(), + simple_query => boolean(), + is_buffer_supported => boolean() }. -type resource_data() :: #{ id := resource_id(), From 1c748070c115cc668b59f06c959d26a83cd28c1b Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 14:01:27 +0100 Subject: [PATCH 4/9] fix(emqx_connector_mqtt_worker): publish_async can only return ok # Please enter the commit message for your changes. Lines starting --- .../src/mqtt/emqx_connector_mqtt_worker.erl | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_worker.erl b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_worker.erl index 631ac9350..6da63f99a 100644 --- a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_worker.erl +++ b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_worker.erl @@ -257,12 +257,8 @@ send_to_remote_async(Name, MsgIn, Callback) -> do_send_async(Name, {true, Msg}, Callback) -> Pid = get_pid(Name), - case emqtt:publish_async(Pid, Msg, _Timeout = infinity, Callback) of - ok -> - {ok, Pid}; - {error, _} = Error -> - Error - end; + ok = emqtt:publish_async(Pid, Msg, _Timeout = infinity, Callback), + {ok, Pid}; do_send_async(_Name, false, _Callback) -> ok. From 9a9943d35db63e0f9802dc3c9e81270819940a6d Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 14:02:34 +0100 Subject: [PATCH 5/9] chore(emqx_mgmt_cache): ignore unused return value for dialyer --- apps/emqx_management/src/emqx_mgmt_cache.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx_management/src/emqx_mgmt_cache.erl b/apps/emqx_management/src/emqx_mgmt_cache.erl index 9b3cd4f56..e7f9ac0b1 100644 --- a/apps/emqx_management/src/emqx_mgmt_cache.erl +++ b/apps/emqx_management/src/emqx_mgmt_cache.erl @@ -47,7 +47,7 @@ start_link() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). init([]) -> - ets:new(?MODULE, [set, named_table, public, {keypos, 1}]), + _ = ets:new(?MODULE, [set, named_table, public, {keypos, 1}]), {ok, #{latest_refresh => 0}}. handle_call(get_sys_memory, _From, State) -> From 58627b7958b03ca2f4ee087878fd22d9eb1db45d Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 14:08:02 +0100 Subject: [PATCH 6/9] chore(emqx_resource_manager): ignore unused return value for dialyzer --- apps/emqx_resource/src/emqx_resource_manager.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/emqx_resource/src/emqx_resource_manager.erl b/apps/emqx_resource/src/emqx_resource_manager.erl index 5de55fc4f..db4441d88 100644 --- a/apps/emqx_resource/src/emqx_resource_manager.erl +++ b/apps/emqx_resource/src/emqx_resource_manager.erl @@ -194,7 +194,7 @@ remove(ResId, ClearMetrics) when is_binary(ResId) -> restart(ResId, Opts) when is_binary(ResId) -> case safe_call(ResId, restart, ?T_OPERATION) of ok -> - wait_for_ready(ResId, maps:get(start_timeout, Opts, 5000)), + _ = wait_for_ready(ResId, maps:get(start_timeout, Opts, 5000)), ok; {error, _Reason} = Error -> Error @@ -205,7 +205,7 @@ restart(ResId, Opts) when is_binary(ResId) -> start(ResId, Opts) -> case safe_call(ResId, start, ?T_OPERATION) of ok -> - wait_for_ready(ResId, maps:get(start_timeout, Opts, 5000)), + _ = wait_for_ready(ResId, maps:get(start_timeout, Opts, 5000)), ok; {error, _Reason} = Error -> Error From 0e299642cbf3aa2c803e3b860f2ee1e72d86dbe2 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 14:16:23 +0100 Subject: [PATCH 7/9] chore: function renamed but forgot to update xref excemption --- apps/emqx/test/emqx_bpapi_static_checks.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx/test/emqx_bpapi_static_checks.erl b/apps/emqx/test/emqx_bpapi_static_checks.erl index f218739fc..142750cac 100644 --- a/apps/emqx/test/emqx_bpapi_static_checks.erl +++ b/apps/emqx/test/emqx_bpapi_static_checks.erl @@ -65,7 +65,7 @@ % Reason: legacy code. A fun and a QC query are % passed in the args, it's futile to try to statically % check it - "emqx_mgmt_api:do_query/2, emqx_mgmt_api:collect_total_from_tail_nodes/3" + "emqx_mgmt_api:do_query/2, emqx_mgmt_api:collect_total_from_tail_nodes/2" ). -define(XREF, myxref). From 85fb53dcf0099a1c03e47d1d827ad8486e46f249 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 14:58:50 +0100 Subject: [PATCH 8/9] refactor: use compile switch to diff functions between ce and ee --- apps/emqx_bridge/src/emqx_bridge_api.erl | 10 +++--- .../src/schema/emqx_bridge_schema.erl | 36 ++++++++++--------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge_api.erl b/apps/emqx_bridge/src/emqx_bridge_api.erl index 2c43ce5d7..2e94f0719 100644 --- a/apps/emqx_bridge/src/emqx_bridge_api.erl +++ b/apps/emqx_bridge/src/emqx_bridge_api.erl @@ -171,12 +171,12 @@ bridge_info_examples(Method, WithMetrics) -> ee_bridge_examples(Method) ). +-if(?EMQX_RELEASE_EDITION == ee). ee_bridge_examples(Method) -> - try - emqx_ee_bridge:examples(Method) - catch - _:_ -> #{} - end. + emqx_ee_bridge:examples(Method). +-else. +ee_bridge_examples(_Method) -> #{}. +-endif. info_example(Type, Method, WithMetrics) -> maps:merge( diff --git a/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl b/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl index 4aecfac5d..c490294eb 100644 --- a/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl +++ b/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl @@ -56,8 +56,8 @@ api_schema(Method) -> EE = ee_api_schemas(Method), hoconsc:union(Broker ++ EE). +-if(?EMQX_RELEASE_EDITION == ee). ee_api_schemas(Method) -> - %% must ensure the app is loaded before checking if fn is defined. ensure_loaded(emqx_ee_bridge, emqx_ee_bridge), case erlang:function_exported(emqx_ee_bridge, api_schemas, 1) of true -> emqx_ee_bridge:api_schemas(Method); @@ -65,13 +65,31 @@ ee_api_schemas(Method) -> end. ee_fields_bridges() -> - %% must ensure the app is loaded before checking if fn is defined. ensure_loaded(emqx_ee_bridge, emqx_ee_bridge), case erlang:function_exported(emqx_ee_bridge, fields, 1) of true -> emqx_ee_bridge:fields(bridges); false -> [] end. +%% must ensure the app is loaded before checking if fn is defined. +ensure_loaded(App, Mod) -> + try + _ = application:load(App), + _ = Mod:module_info(), + ok + catch + _:_ -> + ok + end. + +-else. + +ee_api_schemas(_) -> []. + +ee_fields_bridges() -> []. + +-endif. + common_bridge_fields() -> [ {enable, @@ -194,17 +212,3 @@ status() -> node_name() -> {"node", mk(binary(), #{desc => ?DESC("desc_node_name"), example => "emqx@127.0.0.1"})}. - -%%================================================================================================= -%% Internal fns -%%================================================================================================= - -ensure_loaded(App, Mod) -> - try - _ = application:load(App), - _ = Mod:module_info(), - ok - catch - _:_ -> - ok - end. From 7df50032c192b7401f1e66ce80b2f79a9a1a95b7 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 2 Feb 2023 15:00:36 +0100 Subject: [PATCH 9/9] ci: only run static check for emqx-enterprise profile --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6da9231ed..15bc0c79c 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,8 @@ ct: $(REBAR) merge-config .PHONY: static_checks static_checks: - @$(REBAR) as check do dialyzer, xref, ct --suite apps/emqx/test/emqx_static_checks --readable $(CT_READABLE) + @$(REBAR) as check do dialyzer, xref + @if [ "$${PROFILE}" = 'emqx-enterprise' ]; then $(REBAR) ct --suite apps/emqx/test/emqx_static_checks --readable $(CT_READABLE); fi APPS=$(shell $(SCRIPTS)/find-apps.sh)