Fix gc of indexes

* The key of the main table is the object in the index table
This commit is contained in:
Diana Corbacho 2016-04-05 11:45:10 +01:00
parent f15b26a961
commit cb8e840a53
2 changed files with 16 additions and 2 deletions

View File

@ -447,7 +447,7 @@ get_value(Table, Id, Tag, Type) ->
end.
ets_delete_value(Table, Key) ->
ets:delete(rabbit_mgmt_stats_tables:index(Table), Key),
ets:delete_object(rabbit_mgmt_stats_tables:index(Table), Key),
ets:delete(Table, Key).
indexes(Table, Id) ->

View File

@ -29,7 +29,10 @@ gc_test() ->
Stats = stats(Before),
try
rabbit_mgmt_stats:gc(cutoff(), Stats, ?ID),
?assertEqual(After, unstats(Stats))
?assertEqual(After, unstats(Stats)),
Keys = get_table_keys(?TABLE),
Indexes = get_indexes(?TABLE),
?assertEqual(Keys, Indexes)
after
ets:delete_all_objects(?TABLE)
end
@ -182,3 +185,14 @@ select_messages(List) ->
Messages ->
Messages
end.
get_table_keys(Table) ->
%% Note: it only matches queue_msg_counts table 4-tuple
lists:sort(
ets:select(Table,
[{{{'$1', '$2'}, '_', '_', '_'},
[{'=/=', base, '$2'}, {'=/=', total, '$2'}],
[{{'$1', '$2'}}]}])).
get_indexes(Table) ->
lists:sort(ets:tab2list(rabbit_mgmt_stats_tables:index(Table))).