Skip to content

Commit 28060d5

Browse files
merge stable into master
1 parent 8fb6be6 commit 28060d5

File tree

6 files changed

+45
-4
lines changed

6 files changed

+45
-4
lines changed

deps/rabbitmq_management/src/rabbit_mgmt_stats.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ get_value(Table, Id, Tag, Type) ->
447447
end.
448448

449449
ets_delete_value(Table, Key) ->
450-
ets:delete(rabbit_mgmt_stats_tables:index(Table), Key),
450+
ets:delete_object(rabbit_mgmt_stats_tables:index(Table), Key),
451451
ets:delete(Table, Key).
452452

453453
indexes(Table, Id) ->

deps/rabbitmq_management/src/rabbit_mgmt_wm_exchange_publish.erl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ rest_init(Req, _Config) ->
3434
variances(Req, Context) ->
3535
{[<<"accept-encoding">>, <<"origin">>], Req, Context}.
3636

37+
finish_request(ReqData, Context) ->
38+
{ok, rabbit_mgmt_cors:set_headers(ReqData, Context), Context}.
39+
3740
allowed_methods(ReqData, Context) ->
3841
{[<<"POST">>, <<"OPTIONS">>], ReqData, Context}.
3942

deps/rabbitmq_management/src/rabbit_mgmt_wm_parameter.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ resource_exists(ReqData, Context) ->
5353
end, ReqData, Context}.
5454

5555
to_json(ReqData, Context) ->
56-
rabbit_mgmt_util:reply(rabbit_mgmt_format:parameter(parameter(ReqData)),
56+
rabbit_mgmt_util:reply(rabbit_mgmt_format:parameter(
57+
rabbit_mgmt_wm_parameters:fix_shovel_publish_properties(parameter(ReqData))),
5758
ReqData, Context).
5859

5960
accept_content(ReqData, Context = #context{user = User}) ->

deps/rabbitmq_management/src/rabbit_mgmt_wm_parameters.erl

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
-export([init/3, rest_init/2, to_json/2, content_types_provided/2, is_authorized/2,
2020
resource_exists/2, basic/1]).
2121
-export([variances/2]).
22+
-export([fix_shovel_publish_properties/1]).
2223

2324
-include("rabbit_mgmt.hrl").
2425
-include_lib("rabbit_common/include/rabbit.hrl").
@@ -52,6 +53,25 @@ is_authorized(ReqData, Context) ->
5253

5354
%%--------------------------------------------------------------------
5455

56+
%% Hackish fix to make sure we return a JSON object instead of an empty list
57+
%% when the publish-properties value is empty. Should be removed in 3.7.0
58+
%% when we switch to a new JSON library.
59+
fix_shovel_publish_properties(P) ->
60+
case lists:keyfind(component, 1, P) of
61+
{_, <<"shovel">>} ->
62+
case lists:keytake(value, 1, P) of
63+
{value, {_, Values}, P2} ->
64+
case lists:keytake(<<"publish-properties">>, 1, Values) of
65+
{_, {_, []}, Values2} ->
66+
P2 ++ [{value, Values2 ++ [{<<"publish-properties">>, empty_struct}]}];
67+
_ ->
68+
P
69+
end;
70+
_ -> P
71+
end;
72+
_ -> P
73+
end.
74+
5575
basic(ReqData) ->
5676
Raw = case rabbit_mgmt_util:id(component, ReqData) of
5777
none -> rabbit_runtime_parameters:list();
@@ -65,5 +85,5 @@ basic(ReqData) ->
6585
end,
6686
case Raw of
6787
not_found -> not_found;
68-
_ -> [rabbit_mgmt_format:parameter(P) || P <- Raw]
88+
_ -> [rabbit_mgmt_format:parameter(fix_shovel_publish_properties(P)) || P <- Raw]
6989
end.

deps/rabbitmq_management/src/rabbit_mgmt_wm_queue_get.erl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ rest_init(Req, _Config) ->
3434
variances(Req, Context) ->
3535
{[<<"accept-encoding">>, <<"origin">>], Req, Context}.
3636

37+
finish_request(ReqData, Context) ->
38+
{ok, rabbit_mgmt_cors:set_headers(ReqData, Context), Context}.
39+
3740
allowed_methods(ReqData, Context) ->
3841
{[<<"POST">>, <<"OPTIONS">>], ReqData, Context}.
3942

deps/rabbitmq_management/test/src/rabbit_mgmt_test_db_unit.erl

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ gc_test() ->
2929
Stats = stats(Before),
3030
try
3131
rabbit_mgmt_stats:gc(cutoff(), Stats, ?ID),
32-
?assertEqual(After, unstats(Stats))
32+
?assertEqual(After, unstats(Stats)),
33+
Keys = get_table_keys(?TABLE),
34+
Indexes = get_indexes(?TABLE),
35+
?assertEqual(Keys, Indexes)
3336
after
3437
ets:delete_all_objects(?TABLE)
3538
end
@@ -182,3 +185,14 @@ select_messages(List) ->
182185
Messages ->
183186
Messages
184187
end.
188+
189+
get_table_keys(Table) ->
190+
%% Note: it only matches queue_msg_counts table 4-tuple
191+
lists:sort(
192+
ets:select(Table,
193+
[{{{'$1', '$2'}, '_', '_', '_'},
194+
[{'=/=', base, '$2'}, {'=/=', total, '$2'}],
195+
[{{'$1', '$2'}}]}])).
196+
197+
get_indexes(Table) ->
198+
lists:sort(ets:tab2list(rabbit_mgmt_stats_tables:index(Table))).

0 commit comments

Comments
 (0)