From 16d14259828508a463d1cb8d8a97494924470bb3 Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Mon, 27 May 2024 23:24:44 +0200 Subject: [PATCH 1/3] refactor(emqx): Move files related to durable session to a subdir --- apps/emqx/src/emqx_persistent_session_ds.erl | 2 +- .../emqx_persistent_message_ds_gc_worker.erl | 2 +- .../emqx_persistent_session_bookkeeper.erl | 0 .../emqx_persistent_session_ds_gc_worker.erl | 2 +- .../emqx_persistent_session_ds_inflight.erl | 0 .../emqx_persistent_session_ds_router.erl | 0 .../emqx_persistent_session_ds_state.erl | 2 +- .../emqx_persistent_session_ds_stream_scheduler.erl | 2 +- .../emqx_persistent_session_ds_subs.erl | 2 +- .../emqx_persistent_session_ds_sup.erl | 0 .../session_internals.hrl} | 4 ++-- 11 files changed, 8 insertions(+), 8 deletions(-) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_message_ds_gc_worker.erl (99%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_bookkeeper.erl (100%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_gc_worker.erl (99%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_inflight.erl (100%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_router.erl (100%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_state.erl (99%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_stream_scheduler.erl (99%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_subs.erl (99%) rename apps/emqx/src/{ => emqx_persistent_session_ds}/emqx_persistent_session_ds_sup.erl (100%) rename apps/emqx/src/{emqx_persistent_session_ds.hrl => emqx_persistent_session_ds/session_internals.hrl} (97%) diff --git a/apps/emqx/src/emqx_persistent_session_ds.erl b/apps/emqx/src/emqx_persistent_session_ds.erl index 4bc6b4183..1177cf653 100644 --- a/apps/emqx/src/emqx_persistent_session_ds.erl +++ b/apps/emqx/src/emqx_persistent_session_ds.erl @@ -25,7 +25,7 @@ -include("emqx_mqtt.hrl"). --include("emqx_persistent_session_ds.hrl"). +-include("emqx_persistent_session_ds/session_internals.hrl"). -ifdef(TEST). -include_lib("proper/include/proper.hrl"). diff --git a/apps/emqx/src/emqx_persistent_message_ds_gc_worker.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_message_ds_gc_worker.erl similarity index 99% rename from apps/emqx/src/emqx_persistent_message_ds_gc_worker.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_message_ds_gc_worker.erl index e59d73db0..e9a00cd70 100644 --- a/apps/emqx/src/emqx_persistent_message_ds_gc_worker.erl +++ b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_message_ds_gc_worker.erl @@ -21,7 +21,7 @@ -include_lib("stdlib/include/qlc.hrl"). -include_lib("stdlib/include/ms_transform.hrl"). --include("emqx_persistent_session_ds.hrl"). +-include("session_internals.hrl"). %% API -export([ diff --git a/apps/emqx/src/emqx_persistent_session_bookkeeper.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_bookkeeper.erl similarity index 100% rename from apps/emqx/src/emqx_persistent_session_bookkeeper.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_bookkeeper.erl diff --git a/apps/emqx/src/emqx_persistent_session_ds_gc_worker.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_gc_worker.erl similarity index 99% rename from apps/emqx/src/emqx_persistent_session_ds_gc_worker.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_gc_worker.erl index 9fe33beea..8b7205dc1 100644 --- a/apps/emqx/src/emqx_persistent_session_ds_gc_worker.erl +++ b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_gc_worker.erl @@ -21,7 +21,7 @@ -include_lib("stdlib/include/qlc.hrl"). -include_lib("stdlib/include/ms_transform.hrl"). --include("emqx_persistent_session_ds.hrl"). +-include("session_internals.hrl"). %% API -export([ diff --git a/apps/emqx/src/emqx_persistent_session_ds_inflight.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_inflight.erl similarity index 100% rename from apps/emqx/src/emqx_persistent_session_ds_inflight.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_inflight.erl diff --git a/apps/emqx/src/emqx_persistent_session_ds_router.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_router.erl similarity index 100% rename from apps/emqx/src/emqx_persistent_session_ds_router.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_router.erl diff --git a/apps/emqx/src/emqx_persistent_session_ds_state.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_state.erl similarity index 99% rename from apps/emqx/src/emqx_persistent_session_ds_state.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_state.erl index 8f5f01e5c..1e8295e1d 100644 --- a/apps/emqx/src/emqx_persistent_session_ds_state.erl +++ b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_state.erl @@ -79,7 +79,7 @@ ]). -include("emqx_mqtt.hrl"). --include("emqx_persistent_session_ds.hrl"). +-include("session_internals.hrl"). -include_lib("snabbkaffe/include/trace.hrl"). -include_lib("stdlib/include/qlc.hrl"). diff --git a/apps/emqx/src/emqx_persistent_session_ds_stream_scheduler.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl similarity index 99% rename from apps/emqx/src/emqx_persistent_session_ds_stream_scheduler.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl index c6a968a9a..7bf80cc2b 100644 --- a/apps/emqx/src/emqx_persistent_session_ds_stream_scheduler.erl +++ b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_stream_scheduler.erl @@ -29,7 +29,7 @@ -include_lib("emqx/include/logger.hrl"). -include("emqx_mqtt.hrl"). --include("emqx_persistent_session_ds.hrl"). +-include("session_internals.hrl"). %%================================================================================ %% Type declarations diff --git a/apps/emqx/src/emqx_persistent_session_ds_subs.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_subs.erl similarity index 99% rename from apps/emqx/src/emqx_persistent_session_ds_subs.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_subs.erl index 8b4f70a69..3fa65eed5 100644 --- a/apps/emqx/src/emqx_persistent_session_ds_subs.erl +++ b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_subs.erl @@ -41,7 +41,7 @@ -export_type([subscription_state_id/0, subscription/0, subscription_state/0]). --include("emqx_persistent_session_ds.hrl"). +-include("session_internals.hrl"). -include("emqx_mqtt.hrl"). -include_lib("snabbkaffe/include/trace.hrl"). diff --git a/apps/emqx/src/emqx_persistent_session_ds_sup.erl b/apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_sup.erl similarity index 100% rename from apps/emqx/src/emqx_persistent_session_ds_sup.erl rename to apps/emqx/src/emqx_persistent_session_ds/emqx_persistent_session_ds_sup.erl diff --git a/apps/emqx/src/emqx_persistent_session_ds.hrl b/apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl similarity index 97% rename from apps/emqx/src/emqx_persistent_session_ds.hrl rename to apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl index fdbf2c6ea..d763a7d26 100644 --- a/apps/emqx/src/emqx_persistent_session_ds.hrl +++ b/apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl @@ -13,8 +13,8 @@ %% See the License for the specific language governing permissions and %% limitations under the License. %%-------------------------------------------------------------------- --ifndef(EMQX_PERSISTENT_SESSION_DS_HRL_HRL). --define(EMQX_PERSISTENT_SESSION_DS_HRL_HRL, true). +-ifndef(EMQX_SESSION_DS_INTERNALS_HRL). +-define(EMQX_SESSION_DS_INTERNALS_HRL, true). -include("emqx_persistent_message.hrl"). From 04305d004fca741f1e5fb6f354640666d44d1ad8 Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Mon, 27 May 2024 23:36:20 +0200 Subject: [PATCH 2/3] refactor(sessds): Extract metadata keys to a header --- .../include/emqx_durable_session_metadata.hrl | 35 +++++++++++++++++++ .../session_internals.hrl | 14 +------- .../src/emqx_mgmt_api_clients.erl | 3 +- 3 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 apps/emqx/include/emqx_durable_session_metadata.hrl diff --git a/apps/emqx/include/emqx_durable_session_metadata.hrl b/apps/emqx/include/emqx_durable_session_metadata.hrl new file mode 100644 index 000000000..74c037dca --- /dev/null +++ b/apps/emqx/include/emqx_durable_session_metadata.hrl @@ -0,0 +1,35 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2022, 2024 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +%% @doc This header contains definitions of durable session metadata +%% keys, that can be consumed by the external code. +-ifndef(EMQX_DURABLE_SESSION_META_HRL). +-define(EMQX_DURABLE_SESSION_META_HRL, true). + +%% Session metadata keys: +-define(created_at, created_at). +-define(last_alive_at, last_alive_at). +-define(expiry_interval, expiry_interval). +%% Unique integer used to create unique identities: +-define(last_id, last_id). +%% Connection info (relevent for the dashboard): +-define(peername, peername). +-define(will_message, will_message). +-define(clientinfo, clientinfo). +-define(protocol, protocol). +-define(offline_info, offline_info). + +-endif. diff --git a/apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl b/apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl index d763a7d26..e18e2cb7f 100644 --- a/apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl +++ b/apps/emqx/src/emqx_persistent_session_ds/session_internals.hrl @@ -17,6 +17,7 @@ -define(EMQX_SESSION_DS_INTERNALS_HRL, true). -include("emqx_persistent_message.hrl"). +-include("emqx_durable_session_metadata.hrl"). -define(SESSION_TAB, emqx_ds_session). -define(SESSION_SUBSCRIPTIONS_TAB, emqx_ds_session_subscriptions). @@ -70,17 +71,4 @@ sub_state_id :: emqx_persistent_session_ds_subs:subscription_state_id() }). -%% Session metadata keys: --define(created_at, created_at). --define(last_alive_at, last_alive_at). --define(expiry_interval, expiry_interval). -%% Unique integer used to create unique identities: --define(last_id, last_id). -%% Connection info (relevent for the dashboard): --define(peername, peername). --define(will_message, will_message). --define(clientinfo, clientinfo). --define(protocol, protocol). --define(offline_info, offline_info). - -endif. diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index ecef5b720..754209257 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -24,6 +24,7 @@ -include_lib("hocon/include/hoconsc.hrl"). -include_lib("emqx/include/logger.hrl"). -include_lib("emqx_utils/include/emqx_utils_api.hrl"). +-include_lib("emqx/include/emqx_durable_session_metadata.hrl"). -include("emqx_mgmt.hrl"). @@ -1739,7 +1740,7 @@ format_channel_info(undefined, {ClientId, PSInfo0 = #{}}, _Opts) -> format_persistent_session_info( _ClientId, #{ - metadata := #{offline_info := #{chan_info := ChanInfo, stats := Stats} = OfflineInfo} = + metadata := #{?offline_info := #{chan_info := ChanInfo, stats := Stats} = OfflineInfo} = Metadata } = PSInfo From 8fbeca43210f7a8615073509fabcdeeaa4b5f9bd Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Tue, 28 May 2024 00:14:01 +0200 Subject: [PATCH 3/3] chore: Version bumps --- apps/emqx/src/emqx.app.src | 2 +- apps/emqx_auth/src/emqx_auth.app.src | 2 +- apps/emqx_management/src/emqx_management.app.src | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/emqx/src/emqx.app.src b/apps/emqx/src/emqx.app.src index a5d9eb5e6..c391bc1c8 100644 --- a/apps/emqx/src/emqx.app.src +++ b/apps/emqx/src/emqx.app.src @@ -2,7 +2,7 @@ {application, emqx, [ {id, "emqx"}, {description, "EMQX Core"}, - {vsn, "5.3.0"}, + {vsn, "5.4.0"}, {modules, []}, {registered, []}, {applications, [ diff --git a/apps/emqx_auth/src/emqx_auth.app.src b/apps/emqx_auth/src/emqx_auth.app.src index 01bb7d381..35f3ff8b0 100644 --- a/apps/emqx_auth/src/emqx_auth.app.src +++ b/apps/emqx_auth/src/emqx_auth.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_auth, [ {description, "EMQX Authentication and authorization"}, - {vsn, "0.3.0"}, + {vsn, "0.4.0"}, {modules, []}, {registered, [emqx_auth_sup]}, {applications, [ diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index a1432f367..f01f5c7b9 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -2,7 +2,7 @@ {application, emqx_management, [ {description, "EMQX Management API and CLI"}, % strict semver, bump manually! - {vsn, "5.2.0"}, + {vsn, "5.3.0"}, {modules, []}, {registered, [emqx_management_sup]}, {applications, [