Browse Source

Merge pull request #13060 from ieQu1/dev/ds-better-naming

Better naming of DS database and configuration
ieQu1 1 năm trước cách đây
mục cha
commit
93f1a158f7
28 tập tin đã thay đổi với 101 bổ sung76 xóa
  1. 29 0
      apps/emqx/include/emqx_persistent_message.hrl
  2. 2 2
      apps/emqx/integration_test/emqx_persistent_session_ds_SUITE.erl
  3. 8 16
      apps/emqx/src/emqx_persistent_message.erl
  4. 2 2
      apps/emqx/src/emqx_persistent_message_ds_gc_worker.erl
  5. 1 1
      apps/emqx/src/emqx_persistent_session_bookkeeper.erl
  6. 2 2
      apps/emqx/src/emqx_persistent_session_ds.erl
  7. 1 1
      apps/emqx/src/emqx_persistent_session_ds.hrl
  8. 4 4
      apps/emqx/src/emqx_persistent_session_ds_gc_worker.erl
  9. 5 5
      apps/emqx/src/emqx_schema.erl
  10. 1 1
      apps/emqx/src/emqx_zone_schema.erl
  11. 1 1
      apps/emqx/test/emqx_config_SUITE.erl
  12. 3 3
      apps/emqx/test/emqx_persistent_messages_SUITE.erl
  13. 4 3
      apps/emqx/test/emqx_persistent_session_SUITE.erl
  14. 1 1
      apps/emqx/test/emqx_persistent_session_ds_router_SUITE.erl
  15. 2 2
      apps/emqx/test/emqx_takeover_SUITE.erl
  16. 1 1
      apps/emqx_conf/src/emqx_conf_cli.erl
  17. 1 1
      apps/emqx_dashboard/test/emqx_dashboard_monitor_SUITE.erl
  18. 5 5
      apps/emqx_durable_storage/src/emqx_ds_builtin_metrics.erl
  19. 5 4
      apps/emqx_management/src/emqx_mgmt_api_ds.erl
  20. 1 1
      apps/emqx_management/src/emqx_mgmt_data_backup.erl
  21. 2 2
      apps/emqx_management/test/emqx_mgmt_SUITE.erl
  22. 1 1
      apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl
  23. 11 11
      apps/emqx_management/test/emqx_mgmt_api_ds_SUITE.erl
  24. 1 1
      apps/emqx_management/test/emqx_mgmt_api_subscription_SUITE.erl
  25. 1 1
      apps/emqx_management/test/emqx_mgmt_api_topics_SUITE.erl
  26. 1 1
      changes/ce/feat-12739.en.md
  27. 2 0
      changes/ce/fix-13060.en.md
  28. 3 3
      rel/i18n/emqx_schema.hocon

+ 29 - 0
apps/emqx/include/emqx_persistent_message.hrl

@@ -0,0 +1,29 @@
+%%--------------------------------------------------------------------
+%% Copyright (c) 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.
+%%--------------------------------------------------------------------
+-ifndef(EMQX_PERSISTENT_MESSAGE_HRL).
+-define(EMQX_PERSISTENT_MESSAGE_HRL, true).
+
+-define(PERSISTENT_MESSAGE_DB, messages).
+-define(PERSISTENCE_ENABLED, emqx_message_persistence_enabled).
+
+-define(WITH_DURABILITY_ENABLED(DO),
+    case is_persistence_enabled() of
+        true -> DO;
+        false -> {skipped, disabled}
+    end
+).
+
+-endif.

+ 2 - 2
apps/emqx/integration_test/emqx_persistent_session_ds_SUITE.erl

@@ -56,7 +56,7 @@ init_per_testcase(t_session_gc = TestCase, Config) ->
         n => 3,
         n => 3,
         roles => [core, core, core],
         roles => [core, core, core],
         extra_emqx_conf =>
         extra_emqx_conf =>
-            "\n session_persistence {"
+            "\n durable_sessions {"
             "\n   last_alive_update_interval = 500ms "
             "\n   last_alive_update_interval = 500ms "
             "\n   session_gc_interval = 1s "
             "\n   session_gc_interval = 1s "
             "\n   session_gc_batch_size = 2 "
             "\n   session_gc_batch_size = 2 "
@@ -116,7 +116,7 @@ app_specs() ->
     app_specs(_Opts = #{}).
     app_specs(_Opts = #{}).
 
 
 app_specs(Opts) ->
 app_specs(Opts) ->
-    DefaultEMQXConf = "session_persistence {enable = true, renew_streams_interval = 1s}",
+    DefaultEMQXConf = "durable_sessions {enable = true, renew_streams_interval = 1s}",
     ExtraEMQXConf = maps:get(extra_emqx_conf, Opts, ""),
     ExtraEMQXConf = maps:get(extra_emqx_conf, Opts, ""),
     [
     [
         {emqx, DefaultEMQXConf ++ ExtraEMQXConf}
         {emqx, DefaultEMQXConf ++ ExtraEMQXConf}

+ 8 - 16
apps/emqx/src/emqx_persistent_message.erl

@@ -32,15 +32,7 @@
     persist/1
     persist/1
 ]).
 ]).
 
 
--define(PERSISTENT_MESSAGE_DB, emqx_persistent_message).
--define(PERSISTENCE_ENABLED, emqx_message_persistence_enabled).
-
--define(WHEN_ENABLED(DO),
-    case is_persistence_enabled() of
-        true -> DO;
-        false -> {skipped, disabled}
-    end
-).
+-include("emqx_persistent_message.hrl").
 
 
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
 
 
@@ -51,7 +43,7 @@ init() ->
     Zones = maps:keys(emqx_config:get([zones])),
     Zones = maps:keys(emqx_config:get([zones])),
     IsEnabled = lists:any(fun is_persistence_enabled/1, Zones),
     IsEnabled = lists:any(fun is_persistence_enabled/1, Zones),
     persistent_term:put(?PERSISTENCE_ENABLED, IsEnabled),
     persistent_term:put(?PERSISTENCE_ENABLED, IsEnabled),
-    ?WHEN_ENABLED(begin
+    ?WITH_DURABILITY_ENABLED(begin
         ?SLOG(notice, #{msg => "Session durability is enabled"}),
         ?SLOG(notice, #{msg => "Session durability is enabled"}),
         Backend = storage_backend(),
         Backend = storage_backend(),
         ok = emqx_ds:open_db(?PERSISTENT_MESSAGE_DB, Backend),
         ok = emqx_ds:open_db(?PERSISTENT_MESSAGE_DB, Backend),
@@ -66,7 +58,7 @@ is_persistence_enabled() ->
 
 
 -spec is_persistence_enabled(emqx_types:zone()) -> boolean().
 -spec is_persistence_enabled(emqx_types:zone()) -> boolean().
 is_persistence_enabled(Zone) ->
 is_persistence_enabled(Zone) ->
-    emqx_config:get_zone_conf(Zone, [session_persistence, enable]).
+    emqx_config:get_zone_conf(Zone, [durable_sessions, enable]).
 
 
 -spec storage_backend() -> emqx_ds:create_db_opts().
 -spec storage_backend() -> emqx_ds:create_db_opts().
 storage_backend() ->
 storage_backend() ->
@@ -76,7 +68,7 @@ storage_backend() ->
 %% `emqx_persistent_session_ds':
 %% `emqx_persistent_session_ds':
 -spec force_ds(emqx_types:zone()) -> boolean().
 -spec force_ds(emqx_types:zone()) -> boolean().
 force_ds(Zone) ->
 force_ds(Zone) ->
-    emqx_config:get_zone_conf(Zone, [session_persistence, force_persistence]).
+    emqx_config:get_zone_conf(Zone, [durable_sessions, force_persistence]).
 
 
 storage_backend(Path) ->
 storage_backend(Path) ->
     ConfigTree = #{'_config_handler' := {Module, Function}} = emqx_config:get(Path),
     ConfigTree = #{'_config_handler' := {Module, Function}} = emqx_config:get(Path),
@@ -86,12 +78,12 @@ storage_backend(Path) ->
 
 
 -spec add_handler() -> ok.
 -spec add_handler() -> ok.
 add_handler() ->
 add_handler() ->
-    emqx_config_handler:add_handler([session_persistence], ?MODULE).
+    emqx_config_handler:add_handler([durable_sessions], ?MODULE).
 
 
-pre_config_update([session_persistence], #{<<"enable">> := New}, #{<<"enable">> := Old}) when
+pre_config_update([durable_sessions], #{<<"enable">> := New}, #{<<"enable">> := Old}) when
     New =/= Old
     New =/= Old
 ->
 ->
-    {error, "Hot update of session_persistence.enable parameter is currently not supported"};
+    {error, "Hot update of durable_sessions.enable parameter is currently not supported"};
 pre_config_update(_Root, _NewConf, _OldConf) ->
 pre_config_update(_Root, _NewConf, _OldConf) ->
     ok.
     ok.
 
 
@@ -100,7 +92,7 @@ pre_config_update(_Root, _NewConf, _OldConf) ->
 -spec persist(emqx_types:message()) ->
 -spec persist(emqx_types:message()) ->
     emqx_ds:store_batch_result() | {skipped, needs_no_persistence}.
     emqx_ds:store_batch_result() | {skipped, needs_no_persistence}.
 persist(Msg) ->
 persist(Msg) ->
-    ?WHEN_ENABLED(
+    ?WITH_DURABILITY_ENABLED(
         case needs_persistence(Msg) andalso has_subscribers(Msg) of
         case needs_persistence(Msg) andalso has_subscribers(Msg) of
             true ->
             true ->
                 store_message(Msg);
                 store_message(Msg);

+ 2 - 2
apps/emqx/src/emqx_persistent_message_ds_gc_worker.erl

@@ -81,7 +81,7 @@ handle_info(_Info, State) ->
 %%--------------------------------------------------------------------------------
 %%--------------------------------------------------------------------------------
 
 
 ensure_gc_timer() ->
 ensure_gc_timer() ->
-    Timeout = emqx_config:get([session_persistence, message_retention_period]),
+    Timeout = emqx_config:get([durable_sessions, message_retention_period]),
     _ = erlang:send_after(Timeout, self(), #gc{}),
     _ = erlang:send_after(Timeout, self(), #gc{}),
     ok.
     ok.
 
 
@@ -114,7 +114,7 @@ now_ms() ->
 maybe_gc() ->
 maybe_gc() ->
     AllGens = emqx_ds:list_generations_with_lifetimes(?PERSISTENT_MESSAGE_DB),
     AllGens = emqx_ds:list_generations_with_lifetimes(?PERSISTENT_MESSAGE_DB),
     NowMS = now_ms(),
     NowMS = now_ms(),
-    RetentionPeriod = emqx_config:get([session_persistence, message_retention_period]),
+    RetentionPeriod = emqx_config:get([durable_sessions, message_retention_period]),
     TimeThreshold = NowMS - RetentionPeriod,
     TimeThreshold = NowMS - RetentionPeriod,
     maybe_create_new_generation(AllGens, TimeThreshold),
     maybe_create_new_generation(AllGens, TimeThreshold),
     ?tp_span(
     ?tp_span(

+ 1 - 1
apps/emqx/src/emqx_persistent_session_bookkeeper.erl

@@ -102,6 +102,6 @@ tally_persistent_subscriptions(State0) ->
     State0#{subs_count := N}.
     State0#{subs_count := N}.
 
 
 ensure_subs_tally_timer() ->
 ensure_subs_tally_timer() ->
-    Timeout = emqx_config:get([session_persistence, subscription_count_refresh_interval]),
+    Timeout = emqx_config:get([durable_sessions, subscription_count_refresh_interval]),
     _ = erlang:send_after(Timeout, self(), #tally_subs{}),
     _ = erlang:send_after(Timeout, self(), #tally_subs{}),
     ok.
     ok.

+ 2 - 2
apps/emqx/src/emqx_persistent_session_ds.erl

@@ -1150,10 +1150,10 @@ expiry_interval(ConnInfo) ->
 %% zone, since the GC process is responsible for all sessions
 %% zone, since the GC process is responsible for all sessions
 %% regardless of the zone.
 %% regardless of the zone.
 bump_interval() ->
 bump_interval() ->
-    emqx_config:get([session_persistence, last_alive_update_interval]).
+    emqx_config:get([durable_sessions, last_alive_update_interval]).
 
 
 get_config(#{zone := Zone}, Key) ->
 get_config(#{zone := Zone}, Key) ->
-    emqx_config:get_zone_conf(Zone, [session_persistence | Key]).
+    emqx_config:get_zone_conf(Zone, [durable_sessions | Key]).
 
 
 -spec try_get_live_session(emqx_types:clientid()) ->
 -spec try_get_live_session(emqx_types:clientid()) ->
     {pid(), session()} | not_found | not_persistent.
     {pid(), session()} | not_found | not_persistent.

+ 1 - 1
apps/emqx/src/emqx_persistent_session_ds.hrl

@@ -16,7 +16,7 @@
 -ifndef(EMQX_PERSISTENT_SESSION_DS_HRL_HRL).
 -ifndef(EMQX_PERSISTENT_SESSION_DS_HRL_HRL).
 -define(EMQX_PERSISTENT_SESSION_DS_HRL_HRL, true).
 -define(EMQX_PERSISTENT_SESSION_DS_HRL_HRL, true).
 
 
--define(PERSISTENT_MESSAGE_DB, emqx_persistent_message).
+-include("emqx_persistent_message.hrl").
 
 
 -define(SESSION_TAB, emqx_ds_session).
 -define(SESSION_TAB, emqx_ds_session).
 -define(SESSION_SUBSCRIPTIONS_TAB, emqx_ds_session_subscriptions).
 -define(SESSION_SUBSCRIPTIONS_TAB, emqx_ds_session_subscriptions).

+ 4 - 4
apps/emqx/src/emqx_persistent_session_ds_gc_worker.erl

@@ -93,7 +93,7 @@ handle_info(_Info, State) ->
 %%--------------------------------------------------------------------------------
 %%--------------------------------------------------------------------------------
 
 
 ensure_gc_timer() ->
 ensure_gc_timer() ->
-    Timeout = emqx_config:get([session_persistence, session_gc_interval]),
+    Timeout = emqx_config:get([durable_sessions, session_gc_interval]),
     _ = erlang:send_after(Timeout, self(), #gc{}),
     _ = erlang:send_after(Timeout, self(), #gc{}),
     ok.
     ok.
 
 
@@ -133,8 +133,8 @@ start_gc() ->
     ).
     ).
 
 
 gc_context() ->
 gc_context() ->
-    GCInterval = emqx_config:get([session_persistence, session_gc_interval]),
-    BumpInterval = emqx_config:get([session_persistence, last_alive_update_interval]),
+    GCInterval = emqx_config:get([durable_sessions, session_gc_interval]),
+    BumpInterval = emqx_config:get([durable_sessions, last_alive_update_interval]),
     TimeThreshold = max(GCInterval, BumpInterval) * 3,
     TimeThreshold = max(GCInterval, BumpInterval) * 3,
     NowMS = now_ms(),
     NowMS = now_ms(),
     #{
     #{
@@ -149,7 +149,7 @@ gc_context() ->
     }.
     }.
 
 
 gc_loop(MinLastAlive, MinLastAliveWillMsg, It0) ->
 gc_loop(MinLastAlive, MinLastAliveWillMsg, It0) ->
-    GCBatchSize = emqx_config:get([session_persistence, session_gc_batch_size]),
+    GCBatchSize = emqx_config:get([durable_sessions, session_gc_batch_size]),
     case emqx_persistent_session_ds_state:session_iterator_next(It0, GCBatchSize) of
     case emqx_persistent_session_ds_state:session_iterator_next(It0, GCBatchSize) of
         {[], _It} ->
         {[], _It} ->
             ok;
             ok;

+ 5 - 5
apps/emqx/src/emqx_schema.erl

@@ -303,9 +303,9 @@ roots(low) ->
                     converter => fun flapping_detect_converter/2
                     converter => fun flapping_detect_converter/2
                 }
                 }
             )},
             )},
-        {session_persistence,
+        {durable_sessions,
             sc(
             sc(
-                ref("session_persistence"),
+                ref("durable_sessions"),
                 #{
                 #{
                     importance => ?IMPORTANCE_HIDDEN
                     importance => ?IMPORTANCE_HIDDEN
                 }
                 }
@@ -1652,12 +1652,12 @@ fields("trace") ->
                 desc => ?DESC(fields_trace_payload_encode)
                 desc => ?DESC(fields_trace_payload_encode)
             })}
             })}
     ];
     ];
-fields("session_persistence") ->
+fields("durable_sessions") ->
     [
     [
         {"enable",
         {"enable",
             sc(
             sc(
                 boolean(), #{
                 boolean(), #{
-                    desc => ?DESC(session_persistence_enable),
+                    desc => ?DESC(durable_sessions_enable),
                     default => false
                     default => false
                 }
                 }
             )},
             )},
@@ -2091,7 +2091,7 @@ desc("ocsp") ->
     "Per listener OCSP Stapling configuration.";
     "Per listener OCSP Stapling configuration.";
 desc("crl_cache") ->
 desc("crl_cache") ->
     "Global CRL cache options.";
     "Global CRL cache options.";
-desc("session_persistence") ->
+desc("durable_sessions") ->
     "Settings governing durable sessions persistence.";
     "Settings governing durable sessions persistence.";
 desc(durable_storage) ->
 desc(durable_storage) ->
     ?DESC(durable_storage);
     ?DESC(durable_storage);

+ 1 - 1
apps/emqx/src/emqx_zone_schema.erl

@@ -34,7 +34,7 @@ roots() ->
         conn_congestion,
         conn_congestion,
         force_gc,
         force_gc,
         overload_protection,
         overload_protection,
-        session_persistence
+        durable_sessions
     ].
     ].
 
 
 zones_without_default() ->
 zones_without_default() ->

+ 1 - 1
apps/emqx/test/emqx_config_SUITE.erl

@@ -465,7 +465,7 @@ zone_global_defaults() ->
                 enable => false
                 enable => false
             },
             },
         stats => #{enable => true},
         stats => #{enable => true},
-        session_persistence =>
+        durable_sessions =>
             #{
             #{
                 enable => false,
                 enable => false,
                 batch_size => 100,
                 batch_size => 100,

+ 3 - 3
apps/emqx/test/emqx_persistent_messages_SUITE.erl

@@ -27,7 +27,7 @@
 
 
 -import(emqx_common_test_helpers, [on_exit/1]).
 -import(emqx_common_test_helpers, [on_exit/1]).
 
 
--define(PERSISTENT_MESSAGE_DB, emqx_persistent_message).
+-include("emqx_persistent_message.hrl").
 
 
 all() ->
 all() ->
     emqx_common_test_helpers:all(?MODULE).
     emqx_common_test_helpers:all(?MODULE).
@@ -46,7 +46,7 @@ init_per_testcase(t_session_subscription_iterators = TestCase, Config) ->
 init_per_testcase(t_message_gc = TestCase, Config) ->
 init_per_testcase(t_message_gc = TestCase, Config) ->
     Opts = #{
     Opts = #{
         extra_emqx_conf =>
         extra_emqx_conf =>
-            "\n  session_persistence.message_retention_period = 3s"
+            "\n  durable_sessions.message_retention_period = 3s"
             "\n  durable_storage.messages.n_shards = 3"
             "\n  durable_storage.messages.n_shards = 3"
     },
     },
     common_init_per_testcase(TestCase, [{n_shards, 3} | Config], Opts);
     common_init_per_testcase(TestCase, [{n_shards, 3} | Config], Opts);
@@ -554,7 +554,7 @@ app_specs(Opts) ->
     ExtraEMQXConf = maps:get(extra_emqx_conf, Opts, ""),
     ExtraEMQXConf = maps:get(extra_emqx_conf, Opts, ""),
     [
     [
         emqx_durable_storage,
         emqx_durable_storage,
-        {emqx, "session_persistence {enable = true}" ++ ExtraEMQXConf}
+        {emqx, "durable_sessions {enable = true}" ++ ExtraEMQXConf}
     ].
     ].
 
 
 cluster() ->
 cluster() ->

+ 4 - 3
apps/emqx/test/emqx_persistent_session_SUITE.erl

@@ -26,7 +26,8 @@
 -compile(export_all).
 -compile(export_all).
 -compile(nowarn_export_all).
 -compile(nowarn_export_all).
 
 
--define(PERSISTENT_MESSAGE_DB, emqx_persistent_message).
+-include("emqx_persistent_message.hrl").
+
 -define(EMQX_CONFIG, "sys_topics.sys_heartbeat_interval = 1s\n").
 -define(EMQX_CONFIG, "sys_topics.sys_heartbeat_interval = 1s\n").
 
 
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
@@ -67,7 +68,7 @@ groups() ->
 
 
 init_per_group(persistence_disabled, Config) ->
 init_per_group(persistence_disabled, Config) ->
     [
     [
-        {emqx_config, ?EMQX_CONFIG ++ "session_persistence { enable = false }"},
+        {emqx_config, ?EMQX_CONFIG ++ "durable_sessions { enable = false }"},
         {persistence, false}
         {persistence, false}
         | Config
         | Config
     ];
     ];
@@ -75,7 +76,7 @@ init_per_group(persistence_enabled, Config) ->
     [
     [
         {emqx_config,
         {emqx_config,
             ?EMQX_CONFIG ++
             ?EMQX_CONFIG ++
-                "session_persistence {\n"
+                "durable_sessions {\n"
                 "  enable = true\n"
                 "  enable = true\n"
                 "  last_alive_update_interval = 100ms\n"
                 "  last_alive_update_interval = 100ms\n"
                 "  renew_streams_interval = 100ms\n"
                 "  renew_streams_interval = 100ms\n"

+ 1 - 1
apps/emqx/test/emqx_persistent_session_ds_router_SUITE.erl

@@ -38,7 +38,7 @@ init_per_suite(Config) ->
     AppSpecs = [
     AppSpecs = [
         emqx_durable_storage,
         emqx_durable_storage,
         {emqx, #{
         {emqx, #{
-            config => #{session_persistence => #{enable => true}},
+            config => #{durable_sessions => #{enable => true}},
             override_env => [{boot_modules, [broker]}]
             override_env => [{boot_modules, [broker]}]
         }}
         }}
     ],
     ],

+ 2 - 2
apps/emqx/test/emqx_takeover_SUITE.erl

@@ -69,7 +69,7 @@ init_per_group(persistence_enabled = Group, Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
             {emqx,
             {emqx,
-                "session_persistence = {\n"
+                "durable_sessions = {\n"
                 "  enable = true\n"
                 "  enable = true\n"
                 "  last_alive_update_interval = 100ms\n"
                 "  last_alive_update_interval = 100ms\n"
                 "  renew_streams_interval = 100ms\n"
                 "  renew_streams_interval = 100ms\n"
@@ -85,7 +85,7 @@ init_per_group(persistence_enabled = Group, Config) ->
     ];
     ];
 init_per_group(persistence_disabled = Group, Config) ->
 init_per_group(persistence_disabled = Group, Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
-        [{emqx, "session_persistence.enable = false"}],
+        [{emqx, "durable_sessions.enable = false"}],
         #{work_dir => emqx_cth_suite:work_dir(Group, Config)}
         #{work_dir => emqx_cth_suite:work_dir(Group, Config)}
     ),
     ),
     [
     [

+ 1 - 1
apps/emqx_conf/src/emqx_conf_cli.erl

@@ -208,7 +208,7 @@ hidden_roots() ->
         <<"stats">>,
         <<"stats">>,
         <<"broker">>,
         <<"broker">>,
         <<"persistent_session_store">>,
         <<"persistent_session_store">>,
-        <<"session_persistence">>,
+        <<"durable_sessions">>,
         <<"plugins">>,
         <<"plugins">>,
         <<"zones">>
         <<"zones">>
     ].
     ].

+ 1 - 1
apps/emqx_dashboard/test/emqx_dashboard_monitor_SUITE.erl

@@ -82,7 +82,7 @@ init_per_group(persistent_sessions = Group, Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
             emqx_conf,
             emqx_conf,
-            {emqx, "session_persistence {enable = true}"},
+            {emqx, "durable_sessions {enable = true}"},
             {emqx_retainer, ?BASE_RETAINER_CONF},
             {emqx_retainer, ?BASE_RETAINER_CONF},
             emqx_management,
             emqx_management,
             emqx_mgmt_api_test_util:emqx_dashboard(
             emqx_mgmt_api_test_util:emqx_dashboard(

+ 5 - 5
apps/emqx_durable_storage/src/emqx_ds_builtin_metrics.erl

@@ -186,7 +186,7 @@ prometheus_per_db(NodeOrAggr) ->
 %% This function returns the data in the following format:
 %% This function returns the data in the following format:
 %% ```
 %% ```
 %% #{emqx_ds_store_batch_time =>
 %% #{emqx_ds_store_batch_time =>
-%%     [{[{db, emqx_persistent_message}], 42}],
+%%     [{[{db, messages}], 42}],
 %%  ...
 %%  ...
 %% '''
 %% '''
 %%
 %%
@@ -222,11 +222,11 @@ prometheus_per_db(NodeOrAggr, DB, Acc0) ->
 %% This function returns the data in the following format:
 %% This function returns the data in the following format:
 %% ```
 %% ```
 %% #{emqx_ds_egress_batches =>
 %% #{emqx_ds_egress_batches =>
-%%       [{[{db,emqx_persistent_message},{shard,<<"1">>}],99408},
-%%        {[{db,emqx_persistent_message},{shard,<<"0">>}],99409}],
+%%       [{[{db,messages},{shard,<<"1">>}],99408},
+%%        {[{db,messages},{shard,<<"0">>}],99409}],
 %%   emqx_ds_egress_batches_retry =>
 %%   emqx_ds_egress_batches_retry =>
-%%       [{[{db,emqx_persistent_message},{shard,<<"1">>}],0},
-%%        {[{db,emqx_persistent_message},{shard,<<"0">>}],0}],
+%%       [{[{db,messages},{shard,<<"1">>}],0},
+%%        {[{db,messages},{shard,<<"0">>}],0}],
 %%   emqx_ds_egress_messages =>
 %%   emqx_ds_egress_messages =>
 %%        ...
 %%        ...
 %%  }
 %%  }

+ 5 - 4
apps/emqx_management/src/emqx_mgmt_api_ds.erl

@@ -21,6 +21,7 @@
 -include_lib("typerefl/include/types.hrl").
 -include_lib("typerefl/include/types.hrl").
 -include_lib("hocon/include/hoconsc.hrl").
 -include_lib("hocon/include/hoconsc.hrl").
 -include_lib("emqx_utils/include/emqx_utils_api.hrl").
 -include_lib("emqx_utils/include/emqx_utils_api.hrl").
+-include_lib("emqx/include/emqx_persistent_message.hrl").
 
 
 -import(hoconsc, [mk/2, ref/1, enum/1, array/1]).
 -import(hoconsc, [mk/2, ref/1, enum/1, array/1]).
 
 
@@ -222,7 +223,7 @@ fields(sites_shard) ->
                 atom(),
                 atom(),
                 #{
                 #{
                     desc => <<"Durable storage ID">>,
                     desc => <<"Durable storage ID">>,
-                    example => 'emqx_persistent_message'
+                    example => ?PERSISTENT_MESSAGE_DB
                 }
                 }
             )},
             )},
         {id,
         {id,
@@ -249,7 +250,7 @@ fields(db) ->
                 atom(),
                 atom(),
                 #{
                 #{
                     desc => <<"Name of the durable storage">>,
                     desc => <<"Name of the durable storage">>,
-                    example => 'emqx_persistent_message'
+                    example => ?PERSISTENT_MESSAGE_DB
                 }
                 }
             )},
             )},
         {shards,
         {shards,
@@ -403,7 +404,7 @@ param_storage_id() ->
         required => true,
         required => true,
         in => path,
         in => path,
         desc => <<"Durable storage ID">>,
         desc => <<"Durable storage ID">>,
-        example => emqx_persistent_message
+        example => ?PERSISTENT_MESSAGE_DB
     },
     },
     {ds, mk(enum(dbs()), Info)}.
     {ds, mk(enum(dbs()), Info)}.
 
 
@@ -416,7 +417,7 @@ example_site() ->
     end.
     end.
 
 
 dbs() ->
 dbs() ->
-    [emqx_persistent_message].
+    [?PERSISTENT_MESSAGE_DB].
 
 
 shards_of_site(Site) ->
 shards_of_site(Site) ->
     lists:flatmap(
     lists:flatmap(

+ 1 - 1
apps/emqx_management/src/emqx_mgmt_data_backup.erl

@@ -65,7 +65,7 @@
     <<"limiter">>,
     <<"limiter">>,
     <<"log">>,
     <<"log">>,
     <<"persistent_session_store">>,
     <<"persistent_session_store">>,
-    <<"session_persistence">>,
+    <<"durable_sessions">>,
     <<"prometheus">>,
     <<"prometheus">>,
     <<"crl_cache">>,
     <<"crl_cache">>,
     <<"conn_congestion">>,
     <<"conn_congestion">>,

+ 2 - 2
apps/emqx_management/test/emqx_mgmt_SUITE.erl

@@ -46,7 +46,7 @@ groups() ->
 init_per_group(persistence_disabled, Config) ->
 init_per_group(persistence_disabled, Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
-            {emqx, "session_persistence { enable = false }"},
+            {emqx, "durable_sessions { enable = false }"},
             emqx_management
             emqx_management
         ],
         ],
         #{work_dir => emqx_cth_suite:work_dir(Config)}
         #{work_dir => emqx_cth_suite:work_dir(Config)}
@@ -59,7 +59,7 @@ init_per_group(persistence_enabled, Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
             {emqx,
             {emqx,
-                "session_persistence {\n"
+                "durable_sessions {\n"
                 "  enable = true\n"
                 "  enable = true\n"
                 "  last_alive_update_interval = 100ms\n"
                 "  last_alive_update_interval = 100ms\n"
                 "  renew_streams_interval = 100ms\n"
                 "  renew_streams_interval = 100ms\n"

+ 1 - 1
apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl

@@ -79,7 +79,7 @@ end_per_suite(Config) ->
 
 
 init_per_group(persistent_sessions, Config) ->
 init_per_group(persistent_sessions, Config) ->
     AppSpecs = [
     AppSpecs = [
-        {emqx, "session_persistence.enable = true"},
+        {emqx, "durable_sessions.enable = true"},
         emqx_management
         emqx_management
     ],
     ],
     Dashboard = emqx_mgmt_api_test_util:emqx_dashboard(
     Dashboard = emqx_mgmt_api_test_util:emqx_dashboard(

+ 11 - 11
apps/emqx_management/test/emqx_mgmt_api_ds_SUITE.erl

@@ -29,7 +29,7 @@ all() ->
 init_per_suite(Config) ->
 init_per_suite(Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
-            {emqx, "session_persistence.enable = true"},
+            {emqx, "durable_sessions.enable = true"},
             emqx_management,
             emqx_management,
             {emqx_dashboard, "dashboard.listeners.http { enable = true, bind = 18083 }"}
             {emqx_dashboard, "dashboard.listeners.http { enable = true, bind = 18083 }"}
         ],
         ],
@@ -59,7 +59,7 @@ t_get_storages(_) ->
     Path = api_path(["ds", "storages"]),
     Path = api_path(["ds", "storages"]),
     {ok, Response} = request_api(get, Path),
     {ok, Response} = request_api(get, Path),
     ?assertEqual(
     ?assertEqual(
-        [<<"emqx_persistent_message">>],
+        [<<"messages">>],
         emqx_utils_json:decode(Response, [return_maps])
         emqx_utils_json:decode(Response, [return_maps])
     ).
     ).
 
 
@@ -81,7 +81,7 @@ t_get_site(_) ->
             <<"shards">> :=
             <<"shards">> :=
                 [
                 [
                     #{
                     #{
-                        <<"storage">> := <<"emqx_persistent_message">>,
+                        <<"storage">> := <<"messages">>,
                         <<"id">> := _,
                         <<"id">> := _,
                         <<"status">> := <<"up">>
                         <<"status">> := <<"up">>
                     }
                     }
@@ -99,12 +99,12 @@ t_get_db(_) ->
         request_api(get, Path400)
         request_api(get, Path400)
     ),
     ),
     %% Valid path:
     %% Valid path:
-    Path = api_path(["ds", "storages", "emqx_persistent_message"]),
+    Path = api_path(["ds", "storages", "messages"]),
     {ok, Response} = request_api(get, Path),
     {ok, Response} = request_api(get, Path),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
     ?assertMatch(
     ?assertMatch(
         #{
         #{
-            <<"name">> := <<"emqx_persistent_message">>,
+            <<"name">> := <<"messages">>,
             <<"shards">> :=
             <<"shards">> :=
                 [
                 [
                     #{
                     #{
@@ -132,7 +132,7 @@ t_get_replicas(_) ->
         request_api(get, Path400)
         request_api(get, Path400)
     ),
     ),
     %% Valid path:
     %% Valid path:
-    Path = api_path(["ds", "storages", "emqx_persistent_message", "replicas"]),
+    Path = api_path(["ds", "storages", "messages", "replicas"]),
     {ok, Response} = request_api(get, Path),
     {ok, Response} = request_api(get, Path),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
     ?assertEqual(
     ?assertEqual(
@@ -141,7 +141,7 @@ t_get_replicas(_) ->
     ).
     ).
 
 
 t_put_replicas(_) ->
 t_put_replicas(_) ->
-    Path = api_path(["ds", "storages", "emqx_persistent_message", "replicas"]),
+    Path = api_path(["ds", "storages", "messages", "replicas"]),
     %% Error cases:
     %% Error cases:
     ?assertMatch(
     ?assertMatch(
         {ok, 400, #{<<"message">> := <<"Unknown sites: invalid_site">>}},
         {ok, 400, #{<<"message">> := <<"Unknown sites: invalid_site">>}},
@@ -154,13 +154,13 @@ t_put_replicas(_) ->
     ).
     ).
 
 
 t_join(_) ->
 t_join(_) ->
-    Path400 = api_path(["ds", "storages", "emqx_persistent_message", "replicas", "unknown_site"]),
+    Path400 = api_path(["ds", "storages", "messages", "replicas", "unknown_site"]),
     ?assertMatch(
     ?assertMatch(
         {error, {_, 400, _}},
         {error, {_, 400, _}},
         parse_error(request_api(put, Path400))
         parse_error(request_api(put, Path400))
     ),
     ),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
-    Path = api_path(["ds", "storages", "emqx_persistent_message", "replicas", ThisSite]),
+    Path = api_path(["ds", "storages", "messages", "replicas", ThisSite]),
     ?assertMatch(
     ?assertMatch(
         {ok, "OK"},
         {ok, "OK"},
         request_api(put, Path)
         request_api(put, Path)
@@ -168,7 +168,7 @@ t_join(_) ->
 
 
 t_leave(_) ->
 t_leave(_) ->
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
     ThisSite = emqx_ds_replication_layer_meta:this_site(),
-    Path = api_path(["ds", "storages", "emqx_persistent_message", "replicas", ThisSite]),
+    Path = api_path(["ds", "storages", "messages", "replicas", ThisSite]),
     ?assertMatch(
     ?assertMatch(
         {error, {_, 400, _}},
         {error, {_, 400, _}},
         request_api(delete, Path)
         request_api(delete, Path)
@@ -176,7 +176,7 @@ t_leave(_) ->
 
 
 t_leave_notfound(_) ->
 t_leave_notfound(_) ->
     Site = "not_part_of_replica_set",
     Site = "not_part_of_replica_set",
-    Path = api_path(["ds", "storages", "emqx_persistent_message", "replicas", Site]),
+    Path = api_path(["ds", "storages", "messages", "replicas", Site]),
     ?assertMatch(
     ?assertMatch(
         {error, {_, 404, _}},
         {error, {_, 404, _}},
         request_api(delete, Path)
         request_api(delete, Path)

+ 1 - 1
apps/emqx_management/test/emqx_mgmt_api_subscription_SUITE.erl

@@ -61,7 +61,7 @@ init_per_suite(Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
             {emqx,
             {emqx,
-                "session_persistence {\n"
+                "durable_sessions {\n"
                 "    enable = true\n"
                 "    enable = true\n"
                 "    renew_streams_interval = 10ms\n"
                 "    renew_streams_interval = 10ms\n"
                 "}"},
                 "}"},

+ 1 - 1
apps/emqx_management/test/emqx_mgmt_api_topics_SUITE.erl

@@ -27,7 +27,7 @@ all() ->
 init_per_suite(Config) ->
 init_per_suite(Config) ->
     Apps = emqx_cth_suite:start(
     Apps = emqx_cth_suite:start(
         [
         [
-            {emqx, "session_persistence.enable = true"},
+            {emqx, "durable_sessions.enable = true"},
             emqx_management,
             emqx_management,
             emqx_mgmt_api_test_util:emqx_dashboard()
             emqx_mgmt_api_test_util:emqx_dashboard()
         ],
         ],

+ 1 - 1
changes/ce/feat-12739.en.md

@@ -1,2 +1,2 @@
-Make it possible to override `session_persistence` settings per zone.
+Make it possible to override `durable_sessions` settings per zone.
 Since durable sessions are inherently more expensive to maintain than the regular sessions, it's desirable to grant the operator finer control of session durability for different classes of clients.
 Since durable sessions are inherently more expensive to maintain than the regular sessions, it's desirable to grant the operator finer control of session durability for different classes of clients.

+ 2 - 0
changes/ce/fix-13060.en.md

@@ -0,0 +1,2 @@
+- Rename durable storage for MQTT messages from `emqx_persistent_message` to  `messages`
+- Rename configuration root from `session_persistence` to `durable_sessions`

+ 3 - 3
rel/i18n/emqx_schema.hocon

@@ -1207,7 +1207,7 @@ base_listener_zone.desc: """~
     - `force_shutdown`
     - `force_shutdown`
     - `force_gc`
     - `force_gc`
     - `flapping_detect`
     - `flapping_detect`
-    - `session_persistence`"""
+    - `durable_sessions`"""
 
 
 base_listener_zone.label: "Zone"
 base_listener_zone.label: "Zone"
 
 
@@ -1544,10 +1544,10 @@ resource_tags.label:
 resource_tags.desc:
 resource_tags.desc:
 """Tags to annotate this config entry."""
 """Tags to annotate this config entry."""
 
 
-session_persistence_enable.label:
+durable_sessions_enable.label:
 """Enable session persistence"""
 """Enable session persistence"""
 
 
-session_persistence_enable.desc:
+durable_sessions_enable.desc:
 """Use durable storage for client sessions persistence.
 """Use durable storage for client sessions persistence.
 If enabled, sessions configured to outlive client connections, along with their corresponding messages, will be durably stored and survive broker downtime.
 If enabled, sessions configured to outlive client connections, along with their corresponding messages, will be durably stored and survive broker downtime.