From a4f855108c4540db7bea92a9c6c6ae7a80b7d53a Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Tue, 18 Jun 2024 15:17:25 +0200 Subject: [PATCH 01/11] fix: do not crash when showing rule unsing the cmd interface Before the change the command line command $ bin/emqx ctl rules show rule_0hyd would crash if the rule had bridge actions. This has now been fixed by adding a handler for printing bridge actions. Fixes: https://emqx.atlassian.net/browse/EMQX-12548 --- .../src/emqx_rule_engine_cli.erl | 6 +++++ .../test/emqx_rule_engine_SUITE.erl | 26 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl index cda4dc219..7e235b4ee 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl @@ -95,6 +95,12 @@ format_action(BridgeChannelId) when is_binary(BridgeChannelId) -> io_lib:format("- Name: ~s\n" " Type: data-bridge\n" ,[BridgeChannelId] + ); +format_action({bridge_v2, ActionType, ActionName}) -> + io_lib:format("- Name: ~p\n" + " Action Type: ~p\n" + " Type: data-bridge\n" + ,[ActionName, ActionType] ). left_pad(Str) -> diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index 395883e7b..680aac759 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -44,7 +44,8 @@ all() -> {group, metrics_simple}, {group, metrics_fail}, {group, metrics_fail_simple}, - {group, tracing} + {group, tracing}, + {group, command_line} ]. suite() -> @@ -147,6 +148,9 @@ groups() -> ]}, {tracing, [], [ t_trace_rule_id + ]}, + {command_line, [], [ + t_command_line_list_print_rule ]} ]. @@ -596,6 +600,26 @@ t_get_rule_ids_by_action(_) -> ?assertEqual([], emqx_rule_engine:get_rule_ids_by_action(<<"mysql:not_exists">>)), ok = delete_rules_by_ids([<<"t_get_rule_ids_by_action">>]). +%% Check that command line interface don't crash when listing and showing rules +t_command_line_list_print_rule(_) -> + ID = <<"t_command_line">>, + Rule1 = #{ + id => ID, + sql => <<"SELECT * FROM \"t\"">>, + actions => [ + #{function => console, args => #{}}, + #{function => republish, args => #{}}, + <<"mqtt:my_mqtt_bridge">>, + <<"mysql:foo">> + ], + description => ID, + created_at => erlang:system_time(millisecond) + }, + ok = create_rules([Rule1]), + ok = emqx_rule_engine_cli:cmd(["list"]), + ok = emqx_rule_engine_cli:cmd(["show", binary_to_list(ID)]), + ok = delete_rules_by_ids([ID]). + t_ensure_action_removed(_) -> Id = <<"t_ensure_action_removed">>, GetSelectedData = <<"emqx_rule_sqltester:get_selected_data">>, From 3c8c8ddf36ecbeb658054550e5d1bdf8472bd938 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Tue, 18 Jun 2024 15:42:06 +0200 Subject: [PATCH 02/11] docs: add change log entry --- changes/ce/fix-13290.en.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changes/ce/fix-13290.en.md diff --git a/changes/ce/fix-13290.en.md b/changes/ce/fix-13290.en.md new file mode 100644 index 000000000..cbc47c9de --- /dev/null +++ b/changes/ce/fix-13290.en.md @@ -0,0 +1,3 @@ +The following command previously printed nothing if the rule had a data bridge action attached to it. This is now fixed. + + $ bin/emqx ctl rules show rule_0hyd From 4a318f8f5185221d9bb3bf8ad9cae9dc180c006d Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Tue, 18 Jun 2024 17:02:26 +0200 Subject: [PATCH 03/11] style: fix type problem found by dialyzer --- apps/emqx_bridge/src/emqx_bridge_v2.erl | 2 +- apps/emqx_rule_engine/include/rule_engine.hrl | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge_v2.erl b/apps/emqx_bridge/src/emqx_bridge_v2.erl index 0b2e9277a..f9c161e0f 100644 --- a/apps/emqx_bridge/src/emqx_bridge_v2.erl +++ b/apps/emqx_bridge/src/emqx_bridge_v2.erl @@ -164,7 +164,7 @@ -type root_cfg_key() :: ?ROOT_KEY_ACTIONS | ?ROOT_KEY_SOURCES. --export_type([root_cfg_key/0]). +-export_type([root_cfg_key/0, bridge_v2_type/0, bridge_v2_name/0]). %%==================================================================== diff --git a/apps/emqx_rule_engine/include/rule_engine.hrl b/apps/emqx_rule_engine/include/rule_engine.hrl index 51165e18f..ec64bc596 100644 --- a/apps/emqx_rule_engine/include/rule_engine.hrl +++ b/apps/emqx_rule_engine/include/rule_engine.hrl @@ -42,7 +42,8 @@ func := builtin_action_func() | atom(), args => action_fun_args() } - | bridge_channel_id(). + | bridge_channel_id() + | {bridge_v2, emqx_bridge_v2:bridge_v2_type(), emqx_bridge_v2:bridge_v2_name()}. -type rule() :: #{ From 9dd419d8226d3d1b467228f274d9b63b4f12b4b6 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Tue, 18 Jun 2024 10:53:01 -0300 Subject: [PATCH 04/11] test(greptime): attempt to fix flaky tests ``` =WARNING REPORT==== 18-Jun-2024::12:42:04.739109 === reason: no_endpoints msg: failed_to_start_greptimedb_connector client: #{protocol => http, pool => <<"connector:greptimedb:emqx_bridge_greptimedb_SUITE">>, cli_opts => [{endpoints,[{http,"toxiproxy",4001}]}, {pool_size,2}, {pool_type,random}, {auto_reconnect,1}, {gprc_options,#{sync_start => true, connect_timeout => 5000}}, {dbname,"public"}, {auth,{basic,#{password => <<"******">>, username => "greptime_user"}}}, {https_enabled,false}]} connector: <<"connector:greptimedb:emqx_bridge_greptimedb_SUITE">> ``` --- .../src/emqx_bridge_greptimedb.app.src | 2 +- .../src/emqx_bridge_greptimedb_connector.erl | 4 + .../test/emqx_bridge_greptimedb_SUITE.erl | 88 ++++++++++++------- .../src/emqx_resource_manager.erl | 7 +- 4 files changed, 66 insertions(+), 35 deletions(-) diff --git a/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb.app.src b/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb.app.src index badddb20f..8c3223e8b 100644 --- a/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb.app.src +++ b/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb.app.src @@ -1,6 +1,6 @@ {application, emqx_bridge_greptimedb, [ {description, "EMQX GreptimeDB Bridge"}, - {vsn, "0.2.0"}, + {vsn, "0.2.1"}, {registered, []}, {applications, [ kernel, diff --git a/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb_connector.erl b/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb_connector.erl index 1cd808e46..be52f4469 100644 --- a/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb_connector.erl +++ b/apps/emqx_bridge_greptimedb/src/emqx_bridge_greptimedb_connector.erl @@ -107,6 +107,10 @@ on_start(InstId, Config) -> %% See: greptimedb:start_client/1 start_client(InstId, Config). +on_stop(InstId, #{client := Client}) -> + Res = greptimedb:stop_client(Client), + ?tp(greptimedb_client_stopped, #{instance_id => InstId}), + Res; on_stop(InstId, _State) -> case emqx_resource:get_allocated_resources(InstId) of #{?greptime_client := Client} -> diff --git a/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl b/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl index 96cf0d7c9..f9d778b2b 100644 --- a/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl +++ b/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl @@ -50,18 +50,15 @@ init_per_suite(Config) -> Config. end_per_suite(_Config) -> - delete_all_bridges(), - emqx_mgmt_api_test_util:end_suite(), - ok = emqx_connector_test_helpers:stop_apps([ - emqx_conf, emqx_bridge, emqx_resource, emqx_rule_engine - ]), - _ = application:stop(emqx_connector), ok. init_per_group(GreptimedbType, Config0) when GreptimedbType =:= grpcv1_tcp; GreptimedbType =:= grpcv1_tls -> + ProxyHost = os:getenv("PROXY_HOST", "toxiproxy"), + ProxyPort = list_to_integer(os:getenv("PROXY_PORT", "8474")), + emqx_common_test_helpers:reset_proxy(ProxyHost, ProxyPort), #{ host := GreptimedbHost, port := GreptimedbPort, @@ -89,13 +86,19 @@ init_per_group(GreptimedbType, Config0) when end, case emqx_common_test_helpers:is_tcp_server_available(GreptimedbHost, GreptimedbHttpPort) of true -> - ProxyHost = os:getenv("PROXY_HOST", "toxiproxy"), - ProxyPort = list_to_integer(os:getenv("PROXY_PORT", "8474")), - emqx_common_test_helpers:reset_proxy(ProxyHost, ProxyPort), - ok = start_apps(), - {ok, _} = application:ensure_all_started(emqx_connector), - {ok, _} = application:ensure_all_started(greptimedb), - emqx_mgmt_api_test_util:init_suite(), + Apps = emqx_cth_suite:start( + [ + emqx, + emqx_conf, + emqx_bridge_greptimedb, + emqx_bridge, + emqx_rule_engine, + emqx_management, + emqx_mgmt_api_test_util:emqx_dashboard() + ], + #{work_dir => emqx_cth_suite:work_dir(Config0)} + ), + {ok, _Api} = emqx_common_test_http:create_default_app(), Config = [{use_tls, UseTLS} | Config0], {Name, ConfigString, GreptimedbConfig} = greptimedb_config( grpcv1, GreptimedbHost, GreptimedbPort, Config @@ -116,6 +119,7 @@ init_per_group(GreptimedbType, Config0) when ], {ok, _} = ehttpc_sup:start_pool(EHttpcPoolName, EHttpcPoolOpts), [ + {group_apps, Apps}, {proxy_host, ProxyHost}, {proxy_port, ProxyPort}, {proxy_name, ProxyName}, @@ -150,18 +154,21 @@ end_per_group(Group, Config) when Group =:= grpcv1_tcp; Group =:= grpcv1_tls -> + Apps = ?config(group_apps, Config), ProxyHost = ?config(proxy_host, Config), ProxyPort = ?config(proxy_port, Config), EHttpcPoolName = ?config(ehttpc_pool_name, Config), emqx_common_test_helpers:reset_proxy(ProxyHost, ProxyPort), ehttpc_sup:stop_pool(EHttpcPoolName), - delete_bridge(Config), - _ = application:stop(greptimedb), + emqx_cth_suite:stop(Apps), ok; end_per_group(_Group, _Config) -> ok. init_per_testcase(_Testcase, Config) -> + ProxyHost = ?config(proxy_host, Config), + ProxyPort = ?config(proxy_port, Config), + emqx_common_test_helpers:reset_proxy(ProxyHost, ProxyPort), delete_all_rules(), delete_all_bridges(), Config. @@ -179,14 +186,6 @@ end_per_testcase(_Testcase, Config) -> %% Helper fns %%------------------------------------------------------------------------------ -start_apps() -> - %% some configs in emqx_conf app are mandatory - %% we want to make sure they are loaded before - %% ekka start in emqx_common_test_helpers:start_apps/1 - emqx_common_test_helpers:render_and_load_app_config(emqx_conf), - ok = emqx_common_test_helpers:start_apps([emqx_conf]), - ok = emqx_connector_test_helpers:start_apps([emqx_resource, emqx_bridge, emqx_rule_engine]). - example_write_syntax() -> %% N.B.: this single space character is relevant <<"${topic},clientid=${clientid}", " ", "payload=${payload},", @@ -215,6 +214,7 @@ greptimedb_config(grpcv1 = Type, GreptimedbHost, GreptimedbPort, Config) -> " request_ttl = 1s\n" " query_mode = ~s\n" " batch_size = ~b\n" + " health_check_interval = 5s\n" " }\n" " ssl {\n" " enable = ~p\n" @@ -259,6 +259,7 @@ delete_bridge(Config) -> emqx_bridge:remove(Type, Name). delete_all_bridges() -> + emqx_bridge_v2_testlib:delete_all_bridges_and_connectors(), lists:foreach( fun(#{name := Name, type := Type}) -> emqx_bridge:remove(Type, Name) @@ -692,6 +693,12 @@ t_boolean_variants(Config) -> {ok, _}, create_bridge(Config) ), + ResourceId = resource_id(Config), + ?retry( + _Sleep1 = 1_000, + _Attempts1 = 10, + ?assertEqual({ok, connected}, emqx_resource_manager:health_check(ResourceId)) + ), BoolVariants = #{ true => true, false => false, @@ -728,14 +735,22 @@ t_boolean_variants(Config) -> async -> ct:sleep(500); sync -> ok end, - PersistedData = query_by_clientid(atom_to_binary(?FUNCTION_NAME), ClientId, Config), - Expected = #{ - bool => Translation, - int_value => -123, - uint_value => 123, - payload => emqx_utils_json:encode(Payload) - }, - assert_persisted_data(ClientId, Expected, PersistedData), + ?retry( + _Sleep2 = 500, + _Attempts2 = 20, + begin + PersistedData = query_by_clientid( + atom_to_binary(?FUNCTION_NAME), ClientId, Config + ), + Expected = #{ + bool => Translation, + int_value => -123, + uint_value => 123, + payload => emqx_utils_json:encode(Payload) + }, + assert_persisted_data(ClientId, Expected, PersistedData) + end + ), ok end, BoolVariants @@ -841,6 +856,11 @@ t_get_status(Config) -> emqx_common_test_helpers:with_failure(down, ProxyName, ProxyHost, ProxyPort, fun() -> ?assertEqual({ok, disconnected}, emqx_resource_manager:health_check(ResourceId)) end), + ?retry( + _Sleep = 1_000, + _Attempts = 10, + ?assertEqual({ok, connected}, emqx_resource_manager:health_check(ResourceId)) + ), ok. t_create_disconnected(Config) -> @@ -859,6 +879,12 @@ t_create_disconnected(Config) -> ok end ), + ResourceId = resource_id(Config), + ?retry( + _Sleep = 1_000, + _Attempts = 10, + ?assertEqual({ok, connected}, emqx_resource_manager:health_check(ResourceId)) + ), ok. t_start_error(Config) -> diff --git a/apps/emqx_resource/src/emqx_resource_manager.erl b/apps/emqx_resource/src/emqx_resource_manager.erl index c042054e3..c3b746d8e 100644 --- a/apps/emqx_resource/src/emqx_resource_manager.erl +++ b/apps/emqx_resource/src/emqx_resource_manager.erl @@ -809,17 +809,18 @@ maybe_stop_resource(#data{status = Status} = Data) when Status =/= ?rm_status_st maybe_stop_resource(#data{status = ?rm_status_stopped} = Data) -> Data. -stop_resource(#data{state = ResState, id = ResId} = Data) -> +stop_resource(#data{id = ResId} = Data) -> %% We don't care about the return value of `Mod:on_stop/2'. %% The callback mod should make sure the resource is stopped after on_stop/2 %% is returned. HasAllocatedResources = emqx_resource:has_allocated_resources(ResId), %% Before stop is called we remove all the channels from the resource NewData = remove_channels(Data), - case ResState =/= undefined orelse HasAllocatedResources of + NewResState = NewData#data.state, + case NewResState =/= undefined orelse HasAllocatedResources of true -> %% we clear the allocated resources after stop is successful - emqx_resource:call_stop(NewData#data.id, NewData#data.mod, ResState); + emqx_resource:call_stop(NewData#data.id, NewData#data.mod, NewResState); false -> ok end, From ffec1c7fe0abb5c45b3794838ad354167047f8d0 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Tue, 18 Jun 2024 17:52:26 -0300 Subject: [PATCH 05/11] fix(greptime): attempt patch for cleaning up channels when worker terminates --- apps/emqx_bridge_greptimedb/rebar.config | 2 +- .../test/emqx_bridge_greptimedb_SUITE.erl | 2 ++ mix.exs | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/emqx_bridge_greptimedb/rebar.config b/apps/emqx_bridge_greptimedb/rebar.config index c1039e6f4..916b19643 100644 --- a/apps/emqx_bridge_greptimedb/rebar.config +++ b/apps/emqx_bridge_greptimedb/rebar.config @@ -6,7 +6,7 @@ {emqx_connector, {path, "../../apps/emqx_connector"}}, {emqx_resource, {path, "../../apps/emqx_resource"}}, {emqx_bridge, {path, "../../apps/emqx_bridge"}}, - {greptimedb, {git, "https://github.com/GreptimeTeam/greptimedb-ingester-erl", {tag, "v0.1.8"}}} + {greptimedb, {git, "https://github.com/thalesmg/greptimedb-ingester-erl", {tag, "v0.1.8.1"}}} ]}. {plugins, [rebar3_path_deps]}. {project_plugins, [erlfmt]}. diff --git a/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl b/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl index f9d778b2b..cb4ca2b42 100644 --- a/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl +++ b/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl @@ -99,6 +99,8 @@ init_per_group(GreptimedbType, Config0) when #{work_dir => emqx_cth_suite:work_dir(Config0)} ), {ok, _Api} = emqx_common_test_http:create_default_app(), + %% fixme: debugging + emqx_logger:set_log_level(debug), Config = [{use_tls, UseTLS} | Config0], {Name, ConfigString, GreptimedbConfig} = greptimedb_config( grpcv1, GreptimedbHost, GreptimedbPort, Config diff --git a/mix.exs b/mix.exs index 6ee0c73e5..8c3f9d994 100644 --- a/mix.exs +++ b/mix.exs @@ -218,8 +218,7 @@ defmodule EMQXUmbrella.MixProject do {:snappyer, "1.2.9", override: true}, {:crc32cer, "0.1.8", override: true}, {:opentsdb, github: "emqx/opentsdb-client-erl", tag: "v0.5.1", override: true}, - {:greptimedb, - github: "GreptimeTeam/greptimedb-ingester-erl", tag: "v0.1.8", override: true}, + {:greptimedb, github: "thalesmg/greptimedb-ingester-erl", tag: "v0.1.8.1", override: true}, # The following two are dependencies of rabbit_common. They are needed here to # make mix not complain about conflicting versions {:thoas, github: "emqx/thoas", tag: "v1.0.0", override: true}, From ff2e6e14347a453cde2367f2a9f691dd5eb229dc Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 19 Jun 2024 09:12:30 -0300 Subject: [PATCH 06/11] test(greptime): revert driver patch to test ci again --- apps/emqx_bridge_greptimedb/rebar.config | 2 +- mix.exs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/emqx_bridge_greptimedb/rebar.config b/apps/emqx_bridge_greptimedb/rebar.config index 916b19643..c1039e6f4 100644 --- a/apps/emqx_bridge_greptimedb/rebar.config +++ b/apps/emqx_bridge_greptimedb/rebar.config @@ -6,7 +6,7 @@ {emqx_connector, {path, "../../apps/emqx_connector"}}, {emqx_resource, {path, "../../apps/emqx_resource"}}, {emqx_bridge, {path, "../../apps/emqx_bridge"}}, - {greptimedb, {git, "https://github.com/thalesmg/greptimedb-ingester-erl", {tag, "v0.1.8.1"}}} + {greptimedb, {git, "https://github.com/GreptimeTeam/greptimedb-ingester-erl", {tag, "v0.1.8"}}} ]}. {plugins, [rebar3_path_deps]}. {project_plugins, [erlfmt]}. diff --git a/mix.exs b/mix.exs index 8c3f9d994..6ee0c73e5 100644 --- a/mix.exs +++ b/mix.exs @@ -218,7 +218,8 @@ defmodule EMQXUmbrella.MixProject do {:snappyer, "1.2.9", override: true}, {:crc32cer, "0.1.8", override: true}, {:opentsdb, github: "emqx/opentsdb-client-erl", tag: "v0.5.1", override: true}, - {:greptimedb, github: "thalesmg/greptimedb-ingester-erl", tag: "v0.1.8.1", override: true}, + {:greptimedb, + github: "GreptimeTeam/greptimedb-ingester-erl", tag: "v0.1.8", override: true}, # The following two are dependencies of rabbit_common. They are needed here to # make mix not complain about conflicting versions {:thoas, github: "emqx/thoas", tag: "v1.0.0", override: true}, From 9559ba2f063a2a5e5d350f51365a3591e4ba2ad8 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 19 Jun 2024 13:22:02 -0300 Subject: [PATCH 07/11] test: remove unnecessary lines --- .../test/emqx_bridge_greptimedb_SUITE.erl | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl b/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl index cb4ca2b42..79ad2f999 100644 --- a/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl +++ b/apps/emqx_bridge_greptimedb/test/emqx_bridge_greptimedb_SUITE.erl @@ -98,9 +98,6 @@ init_per_group(GreptimedbType, Config0) when ], #{work_dir => emqx_cth_suite:work_dir(Config0)} ), - {ok, _Api} = emqx_common_test_http:create_default_app(), - %% fixme: debugging - emqx_logger:set_log_level(debug), Config = [{use_tls, UseTLS} | Config0], {Name, ConfigString, GreptimedbConfig} = greptimedb_config( grpcv1, GreptimedbHost, GreptimedbPort, Config From c307c1dfc227fc32232bfe6413d197095248b2bc Mon Sep 17 00:00:00 2001 From: JianBo He Date: Thu, 20 Jun 2024 09:14:26 +0800 Subject: [PATCH 08/11] chore: cut v5.7.1-alpha.1 --- apps/emqx/include/emqx_release.hrl | 4 ++-- deploy/charts/emqx/Chart.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/emqx/include/emqx_release.hrl b/apps/emqx/include/emqx_release.hrl index 97fc51363..46fb16ec9 100644 --- a/apps/emqx/include/emqx_release.hrl +++ b/apps/emqx/include/emqx_release.hrl @@ -32,7 +32,7 @@ %% `apps/emqx/src/bpapi/README.md' %% Opensource edition --define(EMQX_RELEASE_CE, "5.7.0"). +-define(EMQX_RELEASE_CE, "5.7.1-alpha.1"). %% Enterprise edition --define(EMQX_RELEASE_EE, "5.7.0"). +-define(EMQX_RELEASE_EE, "5.7.1-alpha.1"). diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 80e7d3c0a..0bc96e822 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -14,8 +14,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: 5.7.0 +version: 5.7.1-alpha.1 # 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: 5.7.0 +appVersion: 5.7.1-alpha.1 From 12859b8959f175d965de38210a6c7aa2f6a36183 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Thu, 20 Jun 2024 10:03:49 +0200 Subject: [PATCH 09/11] fix: handle yet another action format --- apps/emqx_rule_engine/include/rule_engine.hrl | 3 ++- apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/emqx_rule_engine/include/rule_engine.hrl b/apps/emqx_rule_engine/include/rule_engine.hrl index ec64bc596..7d0000a1c 100644 --- a/apps/emqx_rule_engine/include/rule_engine.hrl +++ b/apps/emqx_rule_engine/include/rule_engine.hrl @@ -43,7 +43,8 @@ args => action_fun_args() } | bridge_channel_id() - | {bridge_v2, emqx_bridge_v2:bridge_v2_type(), emqx_bridge_v2:bridge_v2_name()}. + | {bridge_v2, emqx_bridge_v2:bridge_v2_type(), emqx_bridge_v2:bridge_v2_name()} + | {bridge, emqx_utils_maps:config_key(), emqx_utils_maps:config_key(), bridge_channel_id()}. -type rule() :: #{ diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl index 7e235b4ee..da7ec420e 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl @@ -96,6 +96,12 @@ format_action(BridgeChannelId) when is_binary(BridgeChannelId) -> " Type: data-bridge\n" ,[BridgeChannelId] ); +format_action({bridge, ActionType, ActionName, _Id}) -> + io_lib:format("- Name: ~p\n" + " Action Type: ~p\n" + " Type: data-bridge\n" + ,[ActionName, ActionType] + ); format_action({bridge_v2, ActionType, ActionName}) -> io_lib:format("- Name: ~p\n" " Action Type: ~p\n" From 7d32275ebe55791ac55cc83648171051111ecfe1 Mon Sep 17 00:00:00 2001 From: zmstone Date: Thu, 20 Jun 2024 10:36:01 +0200 Subject: [PATCH 10/11] chore: minimize oss/platform diff --- apps/emqx_conf/src/emqx_conf_schema_inject.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/emqx_conf/src/emqx_conf_schema_inject.erl b/apps/emqx_conf/src/emqx_conf_schema_inject.erl index ec56277ab..baab7cfe8 100644 --- a/apps/emqx_conf/src/emqx_conf_schema_inject.erl +++ b/apps/emqx_conf/src/emqx_conf_schema_inject.erl @@ -25,7 +25,7 @@ schemas(Edition) -> auth_ext(Edition) ++ authn(Edition) ++ authz() ++ - customized(). + customized(Edition). auth_ext(ce) -> []; @@ -67,5 +67,5 @@ authz_mods() -> ]. %% Add more schemas here. -customized() -> +customized(_Edition) -> []. From 23df47664ac50207b456356ed09c7608fdc799a2 Mon Sep 17 00:00:00 2001 From: zmstone Date: Thu, 20 Jun 2024 11:32:11 +0200 Subject: [PATCH 11/11] ci: pull haproxy image from ghcr --- scripts/test/start-two-nodes-in-docker.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/test/start-two-nodes-in-docker.sh b/scripts/test/start-two-nodes-in-docker.sh index b3a20982a..c2cc30d5e 100755 --- a/scripts/test/start-two-nodes-in-docker.sh +++ b/scripts/test/start-two-nodes-in-docker.sh @@ -177,6 +177,7 @@ backend emqx_wss_back server emqx-2 $NODE2:8083 check-send-proxy send-proxy-v2-ssl-cn EOF +HAPROXY_IMAGE='ghcr.io/haproxytech/haproxy-docker-alpine:2.4.27' haproxy_cid=$(docker run -d --name haproxy \ --net "$NET" \ @@ -184,8 +185,8 @@ haproxy_cid=$(docker run -d --name haproxy \ -v "$(pwd)/apps/emqx/etc/certs:/usr/local/etc/haproxy/certs" \ -w /usr/local/etc/haproxy \ "${HAPROXY_PORTS[@]}" \ - "public.ecr.aws/docker/library/haproxy:2.4" \ - bash -c 'set -euo pipefail; + "${HAPROXY_IMAGE}" \ + sh -c 'set -euo pipefail; cat certs/cert.pem certs/key.pem > /tmp/emqx.pem; haproxy -f haproxy.cfg')