From cbdde7165ece1c2d11acd9a291ea310b3117a0de Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Mon, 27 May 2024 15:36:20 +0200 Subject: [PATCH 1/4] fix(redis trace): add separators in redis batch action trace Logger will transform data that looks like IO data into a string which made redis batch traces look like the spaces had been removed from the strings. To prevent this, we render the batched commands into binary string separated by spaces and semicolon. The components of a single command is separated by spaces and the commands in a batch are separated by semicolons. Fixes: https://emqx.atlassian.net/browse/EMQX-12428 --- .../src/emqx_bridge_redis_connector.erl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl b/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl index 535d6e13c..c98863f33 100644 --- a/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl +++ b/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl @@ -6,6 +6,7 @@ -include_lib("emqx/include/logger.hrl"). -include_lib("emqx_resource/include/emqx_resource.hrl"). -include_lib("snabbkaffe/include/snabbkaffe.hrl"). +-include_lib("emqx/include/emqx_trace.hrl"). -behaviour(emqx_resource). @@ -143,7 +144,13 @@ on_batch_query( [{ChannelID, _} | _] = BatchData, emqx_trace:rendered_action_template( ChannelID, - #{commands => Cmds, batch => ture} + #{ + commands => #emqx_trace_format_func_data{ + function = fun trace_format_commands/1, + data = Cmds + }, + batch => true + } ), Result = query(InstId, {cmds, Cmds}, RedisConnSt), ?tp( @@ -162,6 +169,11 @@ on_batch_query( Error end. +trace_format_commands(Commands0) -> + Commands1 = [[unicode:characters_to_list(S) || S <- C] || C <- Commands0], + Commands2 = [lists:join(" ", C) || C <- Commands1], + unicode:characters_to_binary(lists:join("; ", Commands2)). + on_format_query_result({ok, Msg}) -> #{result => ok, message => Msg}; on_format_query_result(Res) -> From 4099e22a7732c367cfa408842876c3ad2f0ceff5 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Mon, 27 May 2024 15:47:48 +0200 Subject: [PATCH 2/4] docs: add changelog entry --- changes/ee/fix-13130.en.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/ee/fix-13130.en.md diff --git a/changes/ee/fix-13130.en.md b/changes/ee/fix-13130.en.md new file mode 100644 index 000000000..7c111cacd --- /dev/null +++ b/changes/ee/fix-13130.en.md @@ -0,0 +1 @@ +Traces for Redis action batch requests have got improved formatting. Spaces are now added between components of commands and semicolons are added between commands to make the trace message easier to read. From 3f1fe413eef9fc788b46133daa8125db26911fae Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Tue, 28 May 2024 06:17:03 +0200 Subject: [PATCH 3/4] refactor: simplify redis trace formatting --- apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl b/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl index c98863f33..e12155bb1 100644 --- a/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl +++ b/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector.erl @@ -170,9 +170,8 @@ on_batch_query( end. trace_format_commands(Commands0) -> - Commands1 = [[unicode:characters_to_list(S) || S <- C] || C <- Commands0], - Commands2 = [lists:join(" ", C) || C <- Commands1], - unicode:characters_to_binary(lists:join("; ", Commands2)). + Commands1 = [lists:join(" ", C) || C <- Commands0], + unicode:characters_to_binary(lists:join("; ", Commands1)). on_format_query_result({ok, Msg}) -> #{result => ok, message => Msg}; From 3151a3123e7c74c68030a4af7ec76d765c35239f Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Tue, 28 May 2024 17:23:35 +0200 Subject: [PATCH 4/4] chore: bump version of emqx_redis_bridge app --- apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src b/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src index 57b4d90f1..acd1837ba 100644 --- a/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src +++ b/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src @@ -1,6 +1,6 @@ {application, emqx_bridge_redis, [ {description, "EMQX Enterprise Redis Bridge"}, - {vsn, "0.1.6"}, + {vsn, "0.1.7"}, {registered, []}, {applications, [ kernel,