From f4a88f717bac8b9c331f3cf5b9da5347a603a526 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 11 Oct 2023 11:47:37 +0800 Subject: [PATCH] feat: support retainer Start Length command --- apps/emqx_retainer/src/emqx_retainer.app.src | 2 +- .../src/emqx_retainer_mnesia_cli.erl | 20 +++++++++++++++---- .../test/emqx_retainer_cli_SUITE.erl | 3 +++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/apps/emqx_retainer/src/emqx_retainer.app.src b/apps/emqx_retainer/src/emqx_retainer.app.src index 8f7c9aa17..cab070826 100644 --- a/apps/emqx_retainer/src/emqx_retainer.app.src +++ b/apps/emqx_retainer/src/emqx_retainer.app.src @@ -2,7 +2,7 @@ {application, emqx_retainer, [ {description, "EMQX Retainer"}, % strict semver, bump manually! - {vsn, "5.0.17"}, + {vsn, "5.0.18"}, {modules, []}, {registered, [emqx_retainer_sup]}, {applications, [kernel, stdlib, emqx, emqx_ctl]}, diff --git a/apps/emqx_retainer/src/emqx_retainer_mnesia_cli.erl b/apps/emqx_retainer/src/emqx_retainer_mnesia_cli.erl index 5710e4df3..9c1f507cb 100644 --- a/apps/emqx_retainer/src/emqx_retainer_mnesia_cli.erl +++ b/apps/emqx_retainer/src/emqx_retainer_mnesia_cli.erl @@ -32,10 +32,11 @@ load() -> ok = emqx_ctl:register_command(retainer, {?MODULE, retainer}, []). retainer(["info"]) -> - ?PRINT("Number of retained messages: ~p~n", [emqx_retainer:retained_count()]); + count(); retainer(["topics"]) -> - [?PRINT("~ts~n", [I]) || I <- emqx_retainer_mnesia:topics()], - ok; + topic(1, 1000); +retainer(["topics", Start, Len]) -> + topic(list_to_integer(Start), list_to_integer(Len)); retainer(["clean", Topic]) -> emqx_retainer:delete(list_to_binary(Topic)); retainer(["clean"]) -> @@ -65,7 +66,9 @@ retainer(_) -> emqx_ctl:usage( [ {"retainer info", "Show the count of retained messages"}, - {"retainer topics", "Show all topics of retained messages"}, + {"retainer topics", "Same as retainer topic 1 1000"}, + {"retainer topics ", + "Show topics of retained messages by the specified range"}, {"retainer clean", "Clean all retained messages"}, {"retainer clean ", "Clean retained messages by the specified topic filter"}, {"retainer reindex status", "Show reindex status"}, @@ -98,3 +101,12 @@ do_reindex(Force) -> end ), ?PRINT_MSG("Reindexing finished~n"). + +count() -> + ?PRINT("Number of retained messages: ~p~n", [emqx_retainer:retained_count()]). + +topic(Start, Len) -> + count(), + Topics = lists:sublist(emqx_retainer_mnesia:topics(), Start, Len), + [?PRINT("~ts~n", [I]) || I <- Topics], + ok. diff --git a/apps/emqx_retainer/test/emqx_retainer_cli_SUITE.erl b/apps/emqx_retainer/test/emqx_retainer_cli_SUITE.erl index bddad5fb3..c04f7a6de 100644 --- a/apps/emqx_retainer/test/emqx_retainer_cli_SUITE.erl +++ b/apps/emqx_retainer/test/emqx_retainer_cli_SUITE.erl @@ -44,6 +44,9 @@ t_info(_Config) -> t_topics(_Config) -> ok = emqx_retainer_mnesia_cli:retainer(["topics"]). +t_topics_with_len(_Config) -> + ok = emqx_retainer_mnesia_cli:retainer(["topics", "100", "200"]). + t_clean(_Config) -> ok = emqx_retainer_mnesia_cli:retainer(["clean"]).