From a1a313d992b8b7b7ed31b46ba971011c6a09813d Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Mon, 29 Apr 2024 09:53:21 +0200 Subject: [PATCH] fix(s3-aggeg): apply CSV column order setting consistently Otherwise, columns that are part of column order could appear and disappear from consecutive uploads, depending on if they are part of the very first buffered event or not. --- apps/emqx_bridge_s3/src/emqx_bridge_s3_aggreg_csv.erl | 3 +-- .../test/emqx_bridge_s3_aggreg_upload_SUITE.erl | 9 +++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/emqx_bridge_s3/src/emqx_bridge_s3_aggreg_csv.erl b/apps/emqx_bridge_s3/src/emqx_bridge_s3_aggreg_csv.erl index 31ce1fcc7..a6e25a87c 100644 --- a/apps/emqx_bridge_s3/src/emqx_bridge_s3_aggreg_csv.erl +++ b/apps/emqx_bridge_s3/src/emqx_bridge_s3_aggreg_csv.erl @@ -58,9 +58,8 @@ close(#csv{}) -> mk_columns(Record, #csv{order = ColumnOrder}) -> Columns = lists:sort(maps:keys(Record)), - OrderedFirst = [CO || CO <- ColumnOrder, lists:member(CO, Columns)], Unoredered = Columns -- ColumnOrder, - OrderedFirst ++ Unoredered. + ColumnOrder ++ Unoredered. -spec emit_header([column()], container()) -> iodata(). emit_header([C], #csv{delimiter = Delim}) -> diff --git a/apps/emqx_bridge_s3/test/emqx_bridge_s3_aggreg_upload_SUITE.erl b/apps/emqx_bridge_s3/test/emqx_bridge_s3_aggreg_upload_SUITE.erl index 07a4c2056..85fdd844b 100644 --- a/apps/emqx_bridge_s3/test/emqx_bridge_s3_aggreg_upload_SUITE.erl +++ b/apps/emqx_bridge_s3/test/emqx_bridge_s3_aggreg_upload_SUITE.erl @@ -26,7 +26,8 @@ <<"publish_received_at">>, <<"clientid">>, <<"topic">>, - <<"payload">> + <<"payload">>, + <<"empty">> | T ]). @@ -185,9 +186,9 @@ t_aggreg_upload(Config) -> ?assertMatch( {ok, [ ?CONF_COLUMN_ORDER(_), - [TS, <<"C1">>, T1, P1 | _], - [TS, <<"C2">>, T2, P2 | _], - [TS, <<"C3">>, T3, P3 | _] + [TS, <<"C1">>, T1, P1, <<>> | _], + [TS, <<"C2">>, T2, P2, <<>> | _], + [TS, <<"C3">>, T3, P3, <<>> | _] ]}, erl_csv:decode(Content) ).