diff --git a/scripts/update_appup.escript b/scripts/update_appup.escript old mode 100644 new mode 100755 diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 98fa9ece2..bc225729f 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -1,76 +1,65 @@ %% -*- mode: erlang -*- {VSN, - [ - {"4.3.2", [ - {load_module, emqx_http_lib, brutal_purge, soft_purge, []} - ]}, - {"4.3.1", [ - {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_frame, brutal_purge, soft_purge, []}, - {load_module, emqx_cm, brutal_purge, soft_purge, []}, - {load_module, emqx_congestion, brutal_purge, soft_purge, []}, - {load_module, emqx_node_dump, 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, []}, - {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []}, - {load_module, emqx_http_lib, brutal_purge, soft_purge, []} - ]}, - {"4.3.0", [ - {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []}, - {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_congestion, brutal_purge, soft_purge, []}, - {load_module, emqx_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_frame, brutal_purge, soft_purge, []}, - {load_module, emqx_trie, brutal_purge, soft_purge, []}, - {load_module, emqx_cm, brutal_purge, soft_purge, []}, - {load_module, emqx_node_dump, 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, []}, - {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []}, - {load_module, emqx_metrics, brutal_purge, soft_purge, []}, - {apply, {emqx_metrics, upgrade_retained_delayed_counter_type, []}}, - {load_module, emqx_http_lib, brutal_purge, soft_purge, []} - ]}, - {<<".*">>, []} - ], - [ - {"4.3.2", [ - {load_module, emqx_http_lib, brutal_purge, soft_purge, []} - ]}, - {"4.3.1", [ - {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_frame, brutal_purge, soft_purge, []}, - {load_module, emqx_cm, brutal_purge, soft_purge, []}, - {load_module, emqx_congestion, brutal_purge, soft_purge, []}, - {load_module, emqx_node_dump, 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, []}, - {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []}, - {load_module, emqx_http_lib, brutal_purge, soft_purge, []} - ]}, - {"4.3.0", [ - {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []}, - {load_module, emqx_ws_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_connection, brutal_purge, soft_purge, []}, - {load_module, emqx_congestion, brutal_purge, soft_purge, []}, - {load_module, emqx_frame, brutal_purge, soft_purge, []}, - {load_module, emqx_trie, brutal_purge, soft_purge, []}, - {load_module, emqx_cm, brutal_purge, soft_purge, []}, - {load_module, emqx_node_dump, 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, []}, - {load_module, emqx_logger_textfmt, brutal_purge, soft_purge, []}, - %% Just load the module. We don't need to change the 'messages.retained' - %% and 'messages.retained' counter type. - {load_module, emqx_metrics, brutal_purge, soft_purge, []}, - {load_module, emqx_http_lib, brutal_purge, soft_purge, []} - ]}, - {<<".*">>, []} - ] -}. + [{"4.3.2", + [{load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, + {load_module,emqx_channel,brutal_purge,soft_purge,[]}]}, + {"4.3.1", + [{load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_frame,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, + {load_module,emqx_congestion,brutal_purge,soft_purge,[]}, + {load_module,emqx_node_dump,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,[]}, + {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, + {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}]}, + {"4.3.0", + [{load_module,emqx_logger_jsonfmt,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_congestion,brutal_purge,soft_purge,[]}, + {load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_frame,brutal_purge,soft_purge,[]}, + {load_module,emqx_trie,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, + {load_module,emqx_node_dump,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,[]}, + {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + {apply,{emqx_metrics,upgrade_retained_delayed_counter_type,[]}}, + {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}], + [{"4.3.2", + [{load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, + {load_module,emqx_channel,brutal_purge,soft_purge,[]}]}, + {"4.3.1", + [{load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_frame,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, + {load_module,emqx_congestion,brutal_purge,soft_purge,[]}, + {load_module,emqx_node_dump,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,[]}, + {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, + {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}]}, + {"4.3.0", + [{load_module,emqx_logger_jsonfmt,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_congestion,brutal_purge,soft_purge,[]}, + {load_module,emqx_frame,brutal_purge,soft_purge,[]}, + {load_module,emqx_trie,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm,brutal_purge,soft_purge,[]}, + {load_module,emqx_node_dump,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,[]}, + {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}. diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index 3a818b9a7..e3cbff692 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -407,7 +407,8 @@ handle_in(Packet = ?SUBSCRIBE_PACKET(PacketId, Properties, TopicFilters), case emqx_packet:check(Packet) of ok -> TopicFilters0 = parse_topic_filters(TopicFilters), - TupleTopicFilters0 = check_sub_acls(TopicFilters0, Channel), + TopicFilters1 = put_subid_in_subopts(Properties, TopicFilters0), + TupleTopicFilters0 = check_sub_acls(TopicFilters1, Channel), case emqx_zone:get_env(Zone, acl_deny_action, ignore) =:= disconnect andalso lists:any(fun({_TopicFilter, ReasonCode}) -> ReasonCode =:= ?RC_NOT_AUTHORIZED @@ -419,8 +420,7 @@ handle_in(Packet = ?SUBSCRIBE_PACKET(PacketId, Properties, TopicFilters), _Fun(lists:keyreplace(Key, 1, TupleList, Tuple), More); _Fun(TupleList, []) -> TupleList end, - TopicFilters1 = [ TopicFilter || {TopicFilter, 0} <- TupleTopicFilters0], - TopicFilters2 = put_subid_in_subopts(Properties, TopicFilters1), + TopicFilters2 = [ TopicFilter || {TopicFilter, 0} <- TupleTopicFilters0], TopicFilters3 = run_hooks('client.subscribe', [ClientInfo, Properties], TopicFilters2), diff --git a/test/mqtt_protocol_v5_SUITE.erl b/test/emqx_mqtt_protocol_v5_SUITE.erl similarity index 99% rename from test/mqtt_protocol_v5_SUITE.erl rename to test/emqx_mqtt_protocol_v5_SUITE.erl index 0956a07fc..3508a68a3 100644 --- a/test/mqtt_protocol_v5_SUITE.erl +++ b/test/emqx_mqtt_protocol_v5_SUITE.erl @@ -14,7 +14,7 @@ %% limitations under the License. %%-------------------------------------------------------------------- --module(mqtt_protocol_v5_SUITE). +-module(emqx_mqtt_protocol_v5_SUITE). -compile(export_all). -compile(nowarn_export_all). @@ -37,6 +37,7 @@ init_per_suite(Config) -> %% Meck emqtt ok = meck:new(emqtt, [non_strict, passthrough, no_history, no_link]), %% Start Apps + emqx_ct_helpers:boot_modules(all), emqx_ct_helpers:start_apps([]), Config. @@ -288,6 +289,9 @@ t_connect_emit_stats_timeout(_) -> %% [MQTT-3.1.2-22] t_connect_keepalive_timeout(_) -> + %% Prevent the emqtt client bringing us down on the disconnect. + process_flag(trap_exit, true), + Keepalive = 2, {ok, Client} = emqtt:start_link([{proto_ver, v5},